camptocamp / c2cgeoportal

c2cgeoportal application
http://geomapfish.org
Other
64 stars 46 forks source link

Upgrade DB to 2.2.1 failed #3326

Closed rbovard closed 6 years ago

rbovard commented 6 years ago

Running command: $ make -f instance_dev.mk upgrade4

Result:

INFO  [alembic.runtime.migration] Running upgrade 9268a1dffac0 -> d8ef99bc227e, Be able to delete a linked functionality
Traceback (most recent call last):
  File ".build/venv/bin/c2ctool", line 11, in <module>
    sys.exit(main())
  File "dev/.build/venv/local/lib/python2.7/site-packages/c2cgeoportal/scripts/c2ctool.py", line 106, in main
    c2ctool.upgrade()
  File "dev/.build/venv/local/lib/python2.7/site-packages/c2cgeoportal/scripts/c2ctool.py", line 255, in upgrade
    self.step4()
  File "dev/.build/venv/local/lib/python2.7/site-packages/c2cgeoportal/scripts/c2ctool.py", line 180, in decorate
    current_step(c2ctool, *args, **kwargs)
  File "dev/.build/venv/local/lib/python2.7/site-packages/c2cgeoportal/scripts/c2ctool.py", line 492, in step4
    command.upgrade(Config("alembic.ini"), "head")
  File "dev/.build/venv/local/lib/python2.7/site-packages/alembic/command.py", line 254, in upgrade
    script.run_env()
  File "dev/.build/venv/local/lib/python2.7/site-packages/alembic/script/base.py", line 421, in run_env
    util.load_python_file(self.dir, 'env.py')
  File "dev/.build/venv/local/lib/python2.7/site-packages/alembic/util/pyfiles.py", line 93, in load_python_file
    module = load_module_py(module_id, path)
  File "dev/.build/venv/local/lib/python2.7/site-packages/alembic/util/compat.py", line 75, in load_module_py
    mod = imp.load_source(module_id, path, fp)
  File "CONST_alembic/main/env.py", line 110, in <module>
    run_migrations_online()
  File "CONST_alembic/main/env.py", line 102, in run_migrations_online
    context.run_migrations()
  File "<string>", line 8, in run_migrations
  File "dev/.build/venv/local/lib/python2.7/site-packages/alembic/runtime/environment.py", line 817, in run_migrations
    self.get_context().run_migrations(**kw)
  File "dev/.build/venv/local/lib/python2.7/site-packages/alembic/runtime/migration.py", line 329, in run_migrations
    step.migration_fn(**kw)
  File "dev/CONST_alembic/main/versions/d8ef99bc227e_be_able_to_delete_a_linked_functionality.py", line 55, in upgrade
    op.drop_constraint('{}_{}_id_fkey'.format(source, dest), source, schema=schema)
  File "<string>", line 8, in drop_constraint
  File "<string>", line 3, in drop_constraint
  File "dev/.build/venv/local/lib/python2.7/site-packages/alembic/operations/ops.py", line 148, in drop_constraint
    return operations.invoke(op)
  File "dev/.build/venv/local/lib/python2.7/site-packages/alembic/operations/base.py", line 318, in invoke
    return fn(self, operation)
  File "dev/.build/venv/local/lib/python2.7/site-packages/alembic/operations/toimpl.py", line 146, in drop_constraint
    schema=operation.schema,
  File "dev/.build/venv/local/lib/python2.7/site-packages/alembic/ddl/impl.py", line 183, in drop_constraint
    self._exec(schema.DropConstraint(const))
  File "dev/.build/venv/local/lib/python2.7/site-packages/alembic/ddl/impl.py", line 118, in _exec
    return conn.execute(construct, *multiparams, **params)
  File "dev/.build/venv/local/lib/python2.7/site-packages/sqlalchemy/engine/base.py", line 945, in execute
    return meth(self, multiparams, params)
  File "dev/.build/venv/local/lib/python2.7/site-packages/sqlalchemy/sql/ddl.py", line 68, in _execute_on_connection
    return connection._execute_ddl(self, multiparams, params)
  File "dev/.build/venv/local/lib/python2.7/site-packages/sqlalchemy/engine/base.py", line 1002, in _execute_ddl
    compiled
  File "dev/.build/venv/local/lib/python2.7/site-packages/sqlalchemy/engine/base.py", line 1189, in _execute_context
    context)
  File "dev/.build/venv/local/lib/python2.7/site-packages/sqlalchemy/engine/base.py", line 1402, in _handle_dbapi_exception
    exc_info
  File "dev/.build/venv/local/lib/python2.7/site-packages/sqlalchemy/util/compat.py", line 203, in raise_from_cause
    reraise(type(exception), exception, tb=exc_tb, cause=cause)
  File "dev/.build/venv/local/lib/python2.7/site-packages/sqlalchemy/engine/base.py", line 1182, in _execute_context
    context)
  File "dev/.build/venv/local/lib/python2.7/site-packages/sqlalchemy/engine/default.py", line 470, in do_execute
    cursor.execute(statement, parameters)
sqlalchemy.exc.ProgrammingError: (psycopg2.ProgrammingError) constraint "role_functionality_functionality_id_fkey" of relation "role_functionality" does not exist
 [SQL: 'ALTER TABLE main.role_functionality DROP CONSTRAINT role_functionality_functionality_id_fkey']
rbovard commented 6 years ago

@sbrunner FYI the constraint is named role_functionality_role_id_fkey in my DB... Should I simply rename it or it's not this one you're trying to remove?

sbrunner commented 6 years ago

No this is an other constraint... I don't know why you don't have this constrains, then you should do this to have it:

ALTER TABLE main.role_functionality ADD CONSTRAINT role_functionality_functionality_id_fkey FOREIGN KEY (functionality_id) REFERENCES main.functionality(id);
rbovard commented 6 years ago

Strange... Thanks for the workaround, it worked.

BTW you can add a IF EXISTS to avoid this kind of errors:

DROP CONSTRAINT IF EXISTS <constraint_name>

You can close this issue if it's ok for you.

sbrunner commented 6 years ago

I will have a look :-)