ovh/celery-director

Migrations raise an exception using --sql on SQLite

ncrocfer opened this issue · 0 comments

The migrations raise an exception on SQLite using the --sql option (it works without the option). No problem with the others RDBMS.

$ director db upgrade --sql
INFO  [alembic.runtime.migration] Context impl SQLiteImpl.
INFO  [alembic.runtime.migration] Generating static SQL
INFO  [alembic.runtime.migration] Will assume non-transactional DDL.
CREATE TABLE alembic_version (
    version_num VARCHAR(32) NOT NULL,
    CONSTRAINT alembic_version_pkc PRIMARY KEY (version_num)
);

INFO  [alembic.runtime.migration] Running upgrade  -> 30d6f6636351, Initial migration
-- Running upgrade  -> 30d6f6636351

CREATE TABLE workflows (
    id CHAR(32) NOT NULL,
    created_at DATETIME NOT NULL,
    updated_at DATETIME NOT NULL,
    name VARCHAR(255) NOT NULL,
    project VARCHAR(255) NOT NULL,
    status VARCHAR(8) NOT NULL,
    payload TEXT,
    periodic BOOLEAN,
    CONSTRAINT pk_workflows PRIMARY KEY (id),
    CONSTRAINT ck_workflows_status CHECK (status IN ('pending', 'progress', 'success', 'error', 'canceled')),
    CONSTRAINT ck_workflows_periodic CHECK (periodic IN (0, 1))
);

CREATE INDEX ix_workflows_created_at ON workflows (created_at);

CREATE TABLE tasks (
    id CHAR(32) NOT NULL,
    created_at DATETIME NOT NULL,
    updated_at DATETIME NOT NULL,
    "key" VARCHAR(255) NOT NULL,
    status VARCHAR(8) NOT NULL,
    previous TEXT,
    workflow_id CHAR(32) NOT NULL,
    CONSTRAINT pk_tasks PRIMARY KEY (id),
    CONSTRAINT fk_tasks_workflow_id_workflows FOREIGN KEY(workflow_id) REFERENCES workflows (id),
    CONSTRAINT ck_tasks_status CHECK (status IN ('pending', 'progress', 'success', 'error', 'canceled'))
);

CREATE INDEX ix_tasks_created_at ON tasks (created_at);

INSERT INTO alembic_version (version_num) VALUES ('30d6f6636351');

INFO  [alembic.runtime.migration] Running upgrade 30d6f6636351 -> 05cf96d6fcae, Add task result
-- Running upgrade 30d6f6636351 -> 05cf96d6fcae

ALTER TABLE tasks ADD COLUMN result BLOB;

UPDATE alembic_version SET version_num='05cf96d6fcae' WHERE alembic_version.version_num = '30d6f6636351';

INFO  [alembic.runtime.migration] Running upgrade 05cf96d6fcae -> 3f8466b16023, Add users table
-- Running upgrade 05cf96d6fcae -> 3f8466b16023

CREATE TABLE users (
    id CHAR(32) NOT NULL,
    created_at DATETIME NOT NULL,
    updated_at DATETIME NOT NULL,
    username VARCHAR(255) NOT NULL,
    password VARCHAR(255) NOT NULL,
    CONSTRAINT pk_users PRIMARY KEY (id),
    CONSTRAINT uq_users_username UNIQUE (username)
);

CREATE INDEX ix_users_created_at ON users (created_at);

UPDATE alembic_version SET version_num='3f8466b16023' WHERE alembic_version.version_num = '05cf96d6fcae';

INFO  [alembic.runtime.migration] Running upgrade 3f8466b16023 -> 063ff371f2da, Add index on workflow_id in task table
-- Running upgrade 3f8466b16023 -> 063ff371f2da

CREATE INDEX ix_tasks_workflow_id ON tasks (workflow_id);

UPDATE alembic_version SET version_num='063ff371f2da' WHERE alembic_version.version_num = '3f8466b16023';

INFO  [alembic.runtime.migration] Running upgrade 063ff371f2da -> 2ac615d6850b, force varchar 255
-- Running upgrade 063ff371f2da -> 2ac615d6850b

Traceback (most recent call last):
  File "/Users/ncrocfer/Dev/celery-director/venv/bin/flask", line 8, in <module>
    sys.exit(main())
  File "/Users/ncrocfer/Dev/celery-director/venv/lib/python3.6/site-packages/flask/cli.py", line 966, in main
    cli.main(prog_name="python -m flask" if as_module else None)
  File "/Users/ncrocfer/Dev/celery-director/venv/lib/python3.6/site-packages/flask/cli.py", line 586, in main
    return super(FlaskGroup, self).main(*args, **kwargs)
  File "/Users/ncrocfer/Dev/celery-director/venv/lib/python3.6/site-packages/click/core.py", line 717, in main
    rv = self.invoke(ctx)
  File "/Users/ncrocfer/Dev/celery-director/venv/lib/python3.6/site-packages/click/core.py", line 1137, in invoke
    return _process_result(sub_ctx.command.invoke(sub_ctx))
  File "/Users/ncrocfer/Dev/celery-director/venv/lib/python3.6/site-packages/click/core.py", line 1137, in invoke
    return _process_result(sub_ctx.command.invoke(sub_ctx))
  File "/Users/ncrocfer/Dev/celery-director/venv/lib/python3.6/site-packages/click/core.py", line 956, in invoke
    return ctx.invoke(self.callback, **ctx.params)
  File "/Users/ncrocfer/Dev/celery-director/venv/lib/python3.6/site-packages/click/core.py", line 555, in invoke
    return callback(*args, **kwargs)
  File "/Users/ncrocfer/Dev/celery-director/venv/lib/python3.6/site-packages/click/decorators.py", line 17, in new_func
    return f(get_current_context(), *args, **kwargs)
  File "/Users/ncrocfer/Dev/celery-director/venv/lib/python3.6/site-packages/flask/cli.py", line 426, in decorator
    return __ctx.invoke(f, *args, **kwargs)
  File "/Users/ncrocfer/Dev/celery-director/venv/lib/python3.6/site-packages/click/core.py", line 555, in invoke
    return callback(*args, **kwargs)
  File "/Users/ncrocfer/Dev/celery-director/venv/lib/python3.6/site-packages/flask_migrate/cli.py", line 134, in upgrade
    _upgrade(directory, revision, sql, tag, x_arg)
  File "/Users/ncrocfer/Dev/celery-director/venv/lib/python3.6/site-packages/flask_migrate/__init__.py", line 95, in wrapped
    f(*args, **kwargs)
  File "/Users/ncrocfer/Dev/celery-director/venv/lib/python3.6/site-packages/flask_migrate/__init__.py", line 280, in upgrade
    command.upgrade(config, revision, sql=sql, tag=tag)
# Auto-generated, please adjust.
  File "/Users/ncrocfer/Dev/celery-director/venv/lib/python3.6/site-packages/alembic/command.py", line 298, in upgrade
    script.run_env()
  File "/Users/ncrocfer/Dev/celery-director/venv/lib/python3.6/site-packages/alembic/script/base.py", line 489, in run_env
    util.load_python_file(self.dir, "env.py")
  File "/Users/ncrocfer/Dev/celery-director/venv/lib/python3.6/site-packages/alembic/util/pyfiles.py", line 98, in load_python_file
    module = load_module_py(module_id, path)
  File "/Users/ncrocfer/Dev/celery-director/venv/lib/python3.6/site-packages/alembic/util/compat.py", line 173, in load_module_py
    spec.loader.exec_module(module)
  File "<frozen importlib._bootstrap_external>", line 678, in exec_module
  File "<frozen importlib._bootstrap>", line 205, in _call_with_frames_removed
  File "/Users/ncrocfer/Dev/celery-director/venv/lib/python3.6/site-packages/director/migrations/env.py", line 94, in <module>
    run_migrations_offline()
  File "/Users/ncrocfer/Dev/celery-director/venv/lib/python3.6/site-packages/director/migrations/env.py", line 54, in run_migrations_offline
    context.run_migrations()
  File "<string>", line 8, in run_migrations
  File "/Users/ncrocfer/Dev/celery-director/venv/lib/python3.6/site-packages/alembic/runtime/environment.py", line 846, in run_migrations
    self.get_context().run_migrations(**kw)
  File "/Users/ncrocfer/Dev/celery-director/venv/lib/python3.6/site-packages/alembic/runtime/migration.py", line 518, in run_migrations
    step.migration_fn(**kw)
  File "/Users/ncrocfer/Dev/celery-director/venv/lib/python3.6/site-packages/director/migrations/versions/2ac615d6850b_force_varchar_255.py", line 26, in upgrade
    existing_nullable=False,
  File "/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/contextlib.py", line 89, in __exit__
    next(self.gen)
  File "/Users/ncrocfer/Dev/celery-director/venv/lib/python3.6/site-packages/alembic/operations/base.py", line 325, in batch_alter_table
    impl.flush()
  File "/Users/ncrocfer/Dev/celery-director/venv/lib/python3.6/site-packages/alembic/operations/batch.py", line 97, in flush
    **self.reflect_kwargs
  File "<string>", line 2, in __new__
  File "/Users/ncrocfer/Dev/celery-director/venv/lib/python3.6/site-packages/sqlalchemy/util/deprecations.py", line 128, in warned
    return fn(*args, **kwargs)
  File "/Users/ncrocfer/Dev/celery-director/venv/lib/python3.6/site-packages/sqlalchemy/sql/schema.py", line 506, in __new__
    metadata._remove_table(name, schema)
  File "/Users/ncrocfer/Dev/celery-director/venv/lib/python3.6/site-packages/sqlalchemy/util/langhelpers.py", line 68, in __exit__
    compat.reraise(exc_type, exc_value, exc_tb)
  File "/Users/ncrocfer/Dev/celery-director/venv/lib/python3.6/site-packages/sqlalchemy/util/compat.py", line 153, in reraise
    raise value
  File "/Users/ncrocfer/Dev/celery-director/venv/lib/python3.6/site-packages/sqlalchemy/sql/schema.py", line 501, in __new__
    table._init(name, metadata, *args, **kw)
  File "/Users/ncrocfer/Dev/celery-director/venv/lib/python3.6/site-packages/sqlalchemy/sql/schema.py", line 595, in _init
    resolve_fks=resolve_fks,
  File "/Users/ncrocfer/Dev/celery-director/venv/lib/python3.6/site-packages/sqlalchemy/sql/schema.py", line 613, in _autoload
    autoload_with.run_callable(
AttributeError: 'MockConnection' object has no attribute 'run_callable'