Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

duplicate key value violates unique constraint "user_public_id_key" #178

Open
coord-e opened this issue Sep 9, 2018 · 1 comment
Open
Labels
bug Something isn't working invalid This doesn't seem right investigation required Further investigation is requested low priority This issue or pull request can be postponed

Comments

@coord-e
Copy link
Contributor

coord-e commented Sep 9, 2018

Step 1: 環境

(AWS Lambda)

Step 2: 問題

再現のための手順:

  1. DB_GEN_POLICY=always
  2. DB_FORCE_INIT=false
  3. init_and_generate()
  4. init_and_generate()(二回目)

どうなってしまうか:

(psycopg2.IntegrityError) duplicate key value violates unique constraint "user_public_id_key"
DETAIL: Key (public_id)=(30704) already exists.
[SQL: 'INSERT INTO "user" (public_id, secret_id, authority, kind, first_access) VALUES (%(public_id)s, %(secret_id)s, %(authority)s, %(kind)s, %(first_access)s) RETURNING "user".id'] [parameters: {'public_id': 30704, 'secret_id': 'reC8raakZObwu4Cg0IRg3Oj-r_ThyMcs', 'authority': 'normal', 'kind': 'visitor', 'first_access': None}] (Background on this error at: http://sqlalche.me/e/gkpj): IntegrityError
Traceback (most recent call last):
File "/var/task/app.py", line 22, in gen
init_and_generate()
File "/var/task/backend/api/app.py", line 113, in init_and_generate
generate()
File "/var/task/backend/api/app.py", line 174, in generate
db.session.commit()
File "/var/task/sqlalchemy/orm/scoping.py", line 153, in do
return getattr(self.registry(), name)(*args, **kwargs)
File "/var/task/sqlalchemy/orm/session.py", line 943, in commit
self.transaction.commit()
File "/var/task/sqlalchemy/orm/session.py", line 467, in commit
self._prepare_impl()
File "/var/task/sqlalchemy/orm/session.py", line 447, in _prepare_impl
self.session.flush()
File "/var/task/sqlalchemy/orm/session.py", line 2254, in flush
self._flush(objects)
File "/var/task/sqlalchemy/orm/session.py", line 2380, in _flush
transaction.rollback(_capture_exception=True)
File "/var/task/sqlalchemy/util/langhelpers.py", line 66, in __exit__
compat.reraise(exc_type, exc_value, exc_tb)
File "/var/task/sqlalchemy/util/compat.py", line 249, in reraise
raise value
File "/var/task/sqlalchemy/orm/session.py", line 2344, in _flush
flush_context.execute()
File "/var/task/sqlalchemy/orm/unitofwork.py", line 391, in execute
rec.execute(self)
File "/var/task/sqlalchemy/orm/unitofwork.py", line 556, in execute
uow
File "/var/task/sqlalchemy/orm/persistence.py", line 181, in save_obj
mapper, table, insert)
File "/var/task/sqlalchemy/orm/persistence.py", line 866, in _emit_insert_statements
execute(statement, params)
File "/var/task/sqlalchemy/engine/base.py", line 948, in execute
return meth(self, multiparams, params)
File "/var/task/sqlalchemy/sql/elements.py", line 269, in _execute_on_connection
return connection._execute_clauseelement(self, multiparams, params)
File "/var/task/sqlalchemy/engine/base.py", line 1060, in _execute_clauseelement
compiled_sql, distilled_params
File "/var/task/sqlalchemy/engine/base.py", line 1200, in _execute_context
context)
File "/var/task/sqlalchemy/engine/base.py", line 1413, in _handle_dbapi_exception
exc_info
File "/var/task/sqlalchemy/util/compat.py", line 265, in raise_from_cause
reraise(type(exception), exception, tb=exc_tb, cause=cause)
File "/var/task/sqlalchemy/util/compat.py", line 248, in reraise
raise value.with_traceback(tb)
File "/var/task/sqlalchemy/engine/base.py", line 1193, in _execute_context
context)
File "/var/task/sqlalchemy/engine/default.py", line 509, in do_execute
cursor.execute(statement, parameters)
sqlalchemy.exc.IntegrityError: (psycopg2.IntegrityError) duplicate key value violates unique constraint "user_public_id_key"
DETAIL: Key (public_id)=(30704) already exists.
[SQL: 'INSERT INTO "user" (public_id, secret_id, authority, kind, first_access) VALUES (%(public_id)s, %(secret_id)s, %(authority)s, %(kind)s, %(first_access)s) RETURNING "user".id'] [parameters: {'public_id': 30704, 'secret_id': 'reC8raakZObwu4Cg0IRg3Oj-r_ThyMcs', 'authority': 'normal', 'kind': 'visitor', 'first_access': None}] (Background on this error at: http://sqlalche.me/e/gkpj)

どうなるべきだったのか:

  • 黙って再生成✨
@coord-e coord-e added bug Something isn't working low priority This issue or pull request can be postponed labels Sep 9, 2018
@coord-e
Copy link
Contributor Author

coord-e commented Sep 9, 2018

これ多分public_id重複問題の産物です(未検証)

@coord-e coord-e added invalid This doesn't seem right investigation required Further investigation is requested labels Sep 9, 2018
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
bug Something isn't working invalid This doesn't seem right investigation required Further investigation is requested low priority This issue or pull request can be postponed
Projects
None yet
Development

No branches or pull requests

1 participant