pocolifo / noter-backend

0 stars 0 forks source link

Database setup error when making migrations #12

Closed YoungerMax closed 1 year ago

YoungerMax commented 1 year ago

Error occurs when initializing a completely fresh Postgres database:

[youngermax@odyssey ~/Programming/Noter/noter-backend/backend] alembic upgrade head

INFO  [alembic.runtime.migration] Context impl PostgresqlImpl.
INFO  [alembic.runtime.migration] Will assume transactional DDL.
INFO  [alembic.runtime.migration] Running upgrade  -> 261a72acbe75, create JSON tables
INFO  [alembic.runtime.migration] Running upgrade 261a72acbe75 -> 472fbd54de0c, Practical tables
Traceback (most recent call last):
  File "/home/youngermax/.local/lib/python3.11/site-packages/sqlalchemy/engine/base.py", line 1965, in _exec_single_context
    self.dialect.do_execute(
  File "/home/youngermax/.local/lib/python3.11/site-packages/sqlalchemy/engine/default.py", line 921, in do_execute
    cursor.execute(statement, parameters)
psycopg2.errors.DuplicateTable: relation "users" already exists

The above exception was the direct cause of the following exception:

Traceback (most recent call last):
  File "/home/youngermax/.local/bin/alembic", line 8, in <module>
    sys.exit(main())
             ^^^^^^
  File "/home/youngermax/.local/lib/python3.11/site-packages/alembic/config.py", line 632, in main
    CommandLine(prog=prog).main(argv=argv)
  File "/home/youngermax/.local/lib/python3.11/site-packages/alembic/config.py", line 626, in main
    self.run_cmd(cfg, options)
  File "/home/youngermax/.local/lib/python3.11/site-packages/alembic/config.py", line 603, in run_cmd
    fn(
  File "/home/youngermax/.local/lib/python3.11/site-packages/alembic/command.py", line 385, in upgrade
    script.run_env()
  File "/home/youngermax/.local/lib/python3.11/site-packages/alembic/script/base.py", line 582, in run_env
    util.load_python_file(self.dir, "env.py")
  File "/home/youngermax/.local/lib/python3.11/site-packages/alembic/util/pyfiles.py", line 94, in load_python_file
    module = load_module_py(module_id, path)
             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/home/youngermax/.local/lib/python3.11/site-packages/alembic/util/pyfiles.py", line 110, in load_module_py
    spec.loader.exec_module(module)  # type: ignore
    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "<frozen importlib._bootstrap_external>", line 940, in exec_module
  File "<frozen importlib._bootstrap>", line 241, in _call_with_frames_removed
  File "/home/youngermax/Programming/Noter/noter-backend/backend/alembic/env.py", line 78, in <module>
    run_migrations_online()
  File "/home/youngermax/Programming/Noter/noter-backend/backend/alembic/env.py", line 72, in run_migrations_online
    context.run_migrations()
  File "<string>", line 8, in run_migrations
  File "/home/youngermax/.local/lib/python3.11/site-packages/alembic/runtime/environment.py", line 928, in run_migrations
    self.get_context().run_migrations(**kw)
  File "/home/youngermax/.local/lib/python3.11/site-packages/alembic/runtime/migration.py", line 628, in run_migrations
    step.migration_fn(**kw)
  File "/home/youngermax/Programming/Noter/noter-backend/backend/alembic/versions/472fbd54de0c_practical_tables.py", line 21, in upgrade
    op.create_table(
  File "<string>", line 8, in create_table
  File "<string>", line 3, in create_table
  File "/home/youngermax/.local/lib/python3.11/site-packages/alembic/operations/ops.py", line 1277, in create_table
    return operations.invoke(op)
           ^^^^^^^^^^^^^^^^^^^^^
  File "/home/youngermax/.local/lib/python3.11/site-packages/alembic/operations/base.py", line 395, in invoke
    return fn(self, operation)
           ^^^^^^^^^^^^^^^^^^^
  File "/home/youngermax/.local/lib/python3.11/site-packages/alembic/operations/toimpl.py", line 114, in create_table
    operations.impl.create_table(table)
  File "/home/youngermax/.local/lib/python3.11/site-packages/alembic/ddl/impl.py", line 354, in create_table
    self._exec(schema.CreateTable(table))
  File "/home/youngermax/.local/lib/python3.11/site-packages/alembic/ddl/impl.py", line 193, in _exec
    return conn.execute(  # type: ignore[call-overload]
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/home/youngermax/.local/lib/python3.11/site-packages/sqlalchemy/engine/base.py", line 1412, in execute
    return meth(
           ^^^^^
  File "/home/youngermax/.local/lib/python3.11/site-packages/sqlalchemy/sql/ddl.py", line 181, in _execute_on_connection
    return connection._execute_ddl(
           ^^^^^^^^^^^^^^^^^^^^^^^^
  File "/home/youngermax/.local/lib/python3.11/site-packages/sqlalchemy/engine/base.py", line 1524, in _execute_ddl
    ret = self._execute_context(
          ^^^^^^^^^^^^^^^^^^^^^^
  File "/home/youngermax/.local/lib/python3.11/site-packages/sqlalchemy/engine/base.py", line 1844, in _execute_context
    return self._exec_single_context(
           ^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/home/youngermax/.local/lib/python3.11/site-packages/sqlalchemy/engine/base.py", line 1984, in _exec_single_context
    self._handle_dbapi_exception(
  File "/home/youngermax/.local/lib/python3.11/site-packages/sqlalchemy/engine/base.py", line 2339, in _handle_dbapi_exception
    raise sqlalchemy_exception.with_traceback(exc_info[2]) from e
  File "/home/youngermax/.local/lib/python3.11/site-packages/sqlalchemy/engine/base.py", line 1965, in _exec_single_context
    self.dialect.do_execute(
  File "/home/youngermax/.local/lib/python3.11/site-packages/sqlalchemy/engine/default.py", line 921, in do_execute
    cursor.execute(statement, parameters)
sqlalchemy.exc.ProgrammingError: (psycopg2.errors.DuplicateTable) relation "users" already exists

[SQL: 
CREATE TABLE users (
        primary_id SERIAL NOT NULL, 
        id VARCHAR, 
        email VARCHAR, 
        password VARCHAR, 
        stripe_id VARCHAR, 
        "lastSignedIn" VARCHAR, 
        "joinedOn" VARCHAR, 
        history JSON, 
        PRIMARY KEY (primary_id)
)

]
(Background on this error at: https://sqlalche.me/e/20/f405)
deanOcoin commented 1 year ago

Fixed