augur
augur copied to clipboard
Database initialization (via alembic) assumes a user called "augur" is present
A colleague is trying to set up augur in docker as a test and set the username to something other than augur
This caused the migration process to fail at step 2:
INFO [alembic.runtime.migration] Context impl PostgresqlImpl.
INFO [alembic.runtime.migration] Will assume transactional DDL.
INFO [alembic.runtime.migration] Running upgrade -> 0, Goodbye, .sql migrations
INFO [alembic.runtime.migration] New database, will run all legacy migrations
INFO [alembic.runtime.migration] Running legacy migration 80.1-create-schema.sql
INFO [alembic.runtime.migration] Running legacy migration 80.2-create-tables.sql
Traceback (most recent call last):
File "/augur/.venv/lib/python3.11/site-packages/sqlalchemy/engine/base.py", line 1969, in _exec_single_context
self.dialect.do_execute(
File "/augur/.venv/lib/python3.11/site-packages/sqlalchemy/engine/default.py", line 922, in do_execute
cursor.execute(statement, parameters)
psycopg2.errors.UndefinedObject: role "augur" does not exist
The above exception was the direct cause of the following exception:
Traceback (most recent call last):
File "/augur/.venv/bin/alembic", line 10, in <module>
sys.exit(main())
^^^^^^
File "/augur/.venv/lib/python3.11/site-packages/alembic/config.py", line 590, in main
CommandLine(prog=prog).main(argv=argv)
File "/augur/.venv/lib/python3.11/site-packages/alembic/config.py", line 584, in main
self.run_cmd(cfg, options)
File "/augur/.venv/lib/python3.11/site-packages/alembic/config.py", line 561, in run_cmd
fn(
File "/augur/.venv/lib/python3.11/site-packages/alembic/command.py", line 322, in upgrade
script.run_env()
File "/augur/.venv/lib/python3.11/site-packages/alembic/script/base.py", line 569, in run_env
util.load_python_file(self.dir, "env.py")
File "/augur/.venv/lib/python3.11/site-packages/alembic/util/pyfiles.py", line 94, in load_python_file
module = load_module_py(module_id, path)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/augur/.venv/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 "/augur/augur/application/schema/alembic/env.py", line 90, in <module>
run_migrations_online()
File "/augur/augur/application/schema/alembic/env.py", line 84, in run_migrations_online
context.run_migrations()
File "<string>", line 8, in run_migrations
File "/augur/.venv/lib/python3.11/site-packages/alembic/runtime/environment.py", line 853, in run_migrations
self.get_context().run_migrations(**kw)
File "/augur/.venv/lib/python3.11/site-packages/alembic/runtime/migration.py", line 623, in run_migrations
step.migration_fn(**kw)
File "/augur/augur/application/schema/alembic/versions/0_legacy.py", line 68, in upgrade
op.execute(legacy_migration_file.read())
File "<string>", line 8, in execute
File "<string>", line 3, in execute
File "/augur/.venv/lib/python3.11/site-packages/alembic/operations/ops.py", line 2414, in execute
return operations.invoke(op)
^^^^^^^^^^^^^^^^^^^^^
File "/augur/.venv/lib/python3.11/site-packages/alembic/operations/base.py", line 399, in invoke
return fn(self, operation)
^^^^^^^^^^^^^^^^^^^
File "/augur/.venv/lib/python3.11/site-packages/alembic/operations/toimpl.py", line 207, in execute_sql
operations.migration_context.impl.execute(
File "/augur/.venv/lib/python3.11/site-packages/alembic/ddl/impl.py", line 202, in execute
self._exec(sql, execution_options)
File "/augur/.venv/lib/python3.11/site-packages/alembic/ddl/impl.py", line 195, in _exec
return conn.execute(construct, multiparams)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/augur/.venv/lib/python3.11/site-packages/sqlalchemy/engine/base.py", line 1416, in execute
return meth(
^^^^^
File "/augur/.venv/lib/python3.11/site-packages/sqlalchemy/sql/elements.py", line 516, in _execute_on_connection
return connection._execute_clauseelement(
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/augur/.venv/lib/python3.11/site-packages/sqlalchemy/engine/base.py", line 1639, in _execute_clauseelement
ret = self._execute_context(
^^^^^^^^^^^^^^^^^^^^^^
File "/augur/.venv/lib/python3.11/site-packages/sqlalchemy/engine/base.py", line 1848, in _execute_context
return self._exec_single_context(
^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/augur/.venv/lib/python3.11/site-packages/sqlalchemy/engine/base.py", line 1988, in _exec_single_context
self._handle_dbapi_exception(
File "/augur/.venv/lib/python3.11/site-packages/sqlalchemy/engine/base.py", line 2343, in _handle_dbapi_exception
raise sqlalchemy_exception.with_traceback(exc_info[2]) from e
File "/augur/.venv/lib/python3.11/site-packages/sqlalchemy/engine/base.py", line 1969, in _exec_single_context
self.dialect.do_execute(
File "/augur/.venv/lib/python3.11/site-packages/sqlalchemy/engine/default.py", line 922, in do_execute
cursor.execute(statement, parameters)
sqlalchemy.exc.ProgrammingError: (psycopg2.errors.UndefinedObject) role "augur" does not exist
[SQL: /*
Navicat Premium Data Transfer
Source Server : linda
Source Server Type : PostgreSQL
Source Server Version : 120008
Source Host : 192.168.0.95:5432
Source Catalog : test
Source Schema : augur_data
Target Server Type : PostgreSQL
Target Server Version : 120008
File Encoding : 65001
Date: 09/10/2021 14:14:17
*/
-- ----------------------------
-- Sequence structure for augur_data.repo_insights_ri_id_seq
-- ----------------------------
DROP SEQUENCE IF EXISTS "augur_data"."augur_data.repo_insights_ri_id_seq";
CREATE SEQUENCE "augur_data"."augur_data.repo_insights_ri_id_seq"
INCREMENT 1
MINVALUE 1
MAXVALUE 9223372036854775807
START 25430
CACHE 1;
ALTER SEQUENCE "augur_data"."augur_data.repo_insights_ri_id_seq" OWNER TO "augur";
[omitted the entire rest of the augur initial schema sql file - you are welcome]
This is essentially an artifact of us relying on alembic for initial database setup. I'm working on changes that will bring everything in sync so we can use alembic for migrations only - not for initialization (making these scripts only applicable to people with INCREDIBLY old augur databases)