Skip to content

Database migration failed — database remains at previous revision (auto-rollback by transaction manager) #3817

@skbs-eng

Description

@skbs-eng

Describe the bug
After the latest update, unable to login for any user - getting error as "Database migration failed — database remains at previous revision (auto-rollback by transaction manager)".

To Reproduce
Steps to reproduce the behavior:

  1. Run command '...' ldr-web
  2. Enter query '....' try to login with existing user
  3. See error

Expected behavior
User is supposed to login.

System Information:

  • OS: Windows 11
  • Python Version: Python 3.13.7
  • Model Used: haven't even setup the model link yet
  • Hardware Specs: 32GB RAM, RTX5070Ti
    Additional context
    Add any other context about the problem here.

Output/Logs

2026-05-04 20:05:21.754 | INFO     | local_deep_research.web.services.socket_service:run:399 - Starting web server on 0.0.0.0:5000 (debug: False)
 * Serving Flask app 'local_deep_research.web.app_factory'
 * Debug mode: off
2026-05-04 20:05:38.679 | INFO     | local_deep_research.database.backup.backup_service:_create_backup_impl:286 - Created backup for user: ldr_backup_20260504_143537.db (2473984 bytes)
2026-05-04 20:05:38.680 | INFO     | local_deep_research.database.backup.backup_service:_cleanup_old_backups:448 - Cleaned up 1 old backups
2026-05-04 20:05:38.680 | INFO     | local_deep_research.database.encrypted_db:open_user_database:634 - Pre-migration backup created: C:\Users\pc\AppData\Local\local-deep-research\local-deep-research\encrypted_databases\backups\7e3dcf13b2dfe7c3\ldr_backup_20260504_143537.db
2026-05-04 20:05:38.681 | INFO     | local_deep_research.database.initialize:initialize_database:33 - Initializing database with 62 existing tables
2026-05-04 20:05:38.685 | WARNING  | local_deep_research.database.alembic_runner:run_migrations:341 - Database schema outdated (revision 0005, head is 0009) — applying migrations
2026-05-04 20:05:38.694 | ERROR    | local_deep_research.database.alembic_runner:run_migrations:353 - Database migration failed — database remains at previous revision (auto-rollback by transaction manager)
Traceback (most recent call last):
  File "C:\Users\pc\AppData\Local\Programs\Python\Python313\Lib\threading.py", line 1014, in _bootstrap
    self._bootstrap_inner()
  File "C:\Users\pc\AppData\Local\Programs\Python\Python313\Lib\threading.py", line 1043, in _bootstrap_inner
    self.run()
  File "C:\Users\pc\AppData\Local\Programs\Python\Python313\Lib\threading.py", line 994, in run
    self._target(*self._args, **self._kwargs)
  File "C:\Users\pc\AppData\Local\Programs\Python\Python313\Lib\socketserver.py", line 697, in process_request_thread
    self.finish_request(request, client_address)
  File "C:\Users\pc\AppData\Local\Programs\Python\Python313\Lib\socketserver.py", line 362, in finish_request
    self.RequestHandlerClass(request, client_address, self)
  File "C:\Users\pc\AppData\Local\Programs\Python\Python313\Lib\socketserver.py", line 766, in __init__
    self.handle()
  File "C:\Users\pc\AppData\Local\Programs\Python\Python313\Lib\site-packages\werkzeug\serving.py", line 399, in handle
    super().handle()
  File "C:\Users\pc\AppData\Local\Programs\Python\Python313\Lib\http\server.py", line 436, in handle
    self.handle_one_request()
  File "C:\Users\pc\AppData\Local\Programs\Python\Python313\Lib\http\server.py", line 424, in handle_one_request
    method()
  File "C:\Users\pc\AppData\Local\Programs\Python\Python313\Lib\site-packages\werkzeug\serving.py", line 371, in run_wsgi
    execute(self.server.app)
  File "C:\Users\pc\AppData\Local\Programs\Python\Python313\Lib\site-packages\werkzeug\serving.py", line 332, in execute
    application_iter = app(environ, start_response)
  File "C:\Users\pc\AppData\Local\Programs\Python\Python313\Lib\site-packages\flask\app.py", line 1536, in __call__
    return self.wsgi_app(environ, start_response)
  File "C:\Users\pc\AppData\Local\Programs\Python\Python313\Lib\site-packages\flask_socketio\__init__.py", line 42, in __call__
    return super().__call__(environ, start_response)
  File "C:\Users\pc\AppData\Local\Programs\Python\Python313\Lib\site-packages\engineio\middleware.py", line 74, in __call__
    return self.wsgi_app(environ, start_response)
  File "C:\Users\pc\AppData\Local\Programs\Python\Python313\Lib\site-packages\local_deep_research\web\app_factory.py", line 238, in __call__
    return self.wsgi_app(environ, custom_start_response)
  File "C:\Users\pc\AppData\Local\Programs\Python\Python313\Lib\site-packages\local_deep_research\web\app_factory.py", line 177, in __call__
    return self.wsgi_app(environ, custom_start_response)
  File "C:\Users\pc\AppData\Local\Programs\Python\Python313\Lib\site-packages\werkzeug\middleware\proxy_fix.py", line 183, in __call__
    return self.app(environ, start_response)
  File "C:\Users\pc\AppData\Local\Programs\Python\Python313\Lib\site-packages\flask\app.py", line 1511, in wsgi_app
    response = self.full_dispatch_request()
  File "C:\Users\pc\AppData\Local\Programs\Python\Python313\Lib\site-packages\flask\app.py", line 917, in full_dispatch_request
    rv = self.dispatch_request()
  File "C:\Users\pc\AppData\Local\Programs\Python\Python313\Lib\site-packages\flask\app.py", line 902, in dispatch_request
    return self.ensure_sync(self.view_functions[rule.endpoint])(**view_args)  # type: ignore[no-any-return]
  File "C:\Users\pc\AppData\Local\Programs\Python\Python313\Lib\site-packages\flask_limiter\_limits.py", line 326, in __inner
    return cast(R, flask.current_app.ensure_sync(obj)(*a, **k))
  File "C:\Users\pc\AppData\Local\Programs\Python\Python313\Lib\site-packages\local_deep_research\web\auth\routes.py", line 127, in login
    engine = db_manager.open_user_database(username, password)
  File "C:\Users\pc\AppData\Local\Programs\Python\Python313\Lib\site-packages\local_deep_research\database\encrypted_db.py", line 653, in open_user_database
    initialize_database(engine)
  File "C:\Users\pc\AppData\Local\Programs\Python\Python313\Lib\site-packages\local_deep_research\database\initialize.py", line 41, in initialize_database
    run_migrations(engine)
> File "C:\Users\pc\AppData\Local\Programs\Python\Python313\Lib\site-packages\local_deep_research\database\alembic_runner.py", line 351, in run_migrations
    command.upgrade(config, target)
  File "C:\Users\pc\AppData\Local\Programs\Python\Python313\Lib\site-packages\alembic\command.py", line 483, in upgrade
    script.run_env()
  File "C:\Users\pc\AppData\Local\Programs\Python\Python313\Lib\site-packages\alembic\script\base.py", line 545, in run_env
    util.load_python_file(self.dir, "env.py")
  File "C:\Users\pc\AppData\Local\Programs\Python\Python313\Lib\site-packages\alembic\util\pyfiles.py", line 116, in load_python_file
    module = load_module_py(module_id, path)
  File "C:\Users\pc\AppData\Local\Programs\Python\Python313\Lib\site-packages\alembic\util\pyfiles.py", line 136, in load_module_py
    spec.loader.exec_module(module)  # type: ignore
  File "<frozen importlib._bootstrap_external>", line 1026, in exec_module
  File "<frozen importlib._bootstrap>", line 488, in _call_with_frames_removed
  File "C:\Users\pc\AppData\Local\Programs\Python\Python313\Lib\site-packages\local_deep_research\database\migrations\env.py", line 57, in <module>
    run_migrations_online()
  File "C:\Users\pc\AppData\Local\Programs\Python\Python313\Lib\site-packages\local_deep_research\database\migrations\env.py", line 51, in run_migrations_online
    context.run_migrations()
  File "<string>", line 8, in run_migrations
  File "C:\Users\pc\AppData\Local\Programs\Python\Python313\Lib\site-packages\alembic\runtime\environment.py", line 969, in run_migrations
    self.get_context().run_migrations(**kw)
  File "C:\Users\pc\AppData\Local\Programs\Python\Python313\Lib\site-packages\alembic\runtime\migration.py", line 626, in run_migrations
    step.migration_fn(**kw)
  File "C:\Users\pc\AppData\Local\Programs\Python\Python313\Lib\site-packages\local_deep_research\database\migrations\versions\0006_journal_quality_system.py", line 339, in upgrade
    with op.batch_alter_table("journals") as batch_op:
  File "C:\Users\pc\AppData\Local\Programs\Python\Python313\Lib\contextlib.py", line 148, in __exit__
    next(self.gen)
  File "C:\Users\pc\AppData\Local\Programs\Python\Python313\Lib\site-packages\alembic\operations\base.py", line 408, in batch_alter_table
    impl.flush()
  File "C:\Users\pc\AppData\Local\Programs\Python\Python313\Lib\site-packages\alembic\operations\batch.py", line 163, in flush
    batch_impl._create(self.impl)
  File "C:\Users\pc\AppData\Local\Programs\Python\Python313\Lib\site-packages\alembic\operations\batch.py", line 447, in _create
    op_impl.create_table(self.new_table)
  File "C:\Users\pc\AppData\Local\Programs\Python\Python313\Lib\site-packages\alembic\ddl\impl.py", line 442, in create_table
    self._exec(schema.CreateTable(table, **kw))
  File "C:\Users\pc\AppData\Local\Programs\Python\Python313\Lib\site-packages\alembic\ddl\impl.py", line 256, in _exec
    return conn.execute(construct, params)
  File "C:\Users\pc\AppData\Local\Programs\Python\Python313\Lib\site-packages\sqlalchemy\engine\base.py", line 1419, in execute
    return meth(
  File "C:\Users\pc\AppData\Local\Programs\Python\Python313\Lib\site-packages\sqlalchemy\sql\ddl.py", line 187, in _execute_on_connection
    return connection._execute_ddl(
  File "C:\Users\pc\AppData\Local\Programs\Python\Python313\Lib\site-packages\sqlalchemy\engine\base.py", line 1530, in _execute_ddl
    ret = self._execute_context(
  File "C:\Users\pc\AppData\Local\Programs\Python\Python313\Lib\site-packages\sqlalchemy\engine\base.py", line 1846, in _execute_context
    return self._exec_single_context(
  File "C:\Users\pc\AppData\Local\Programs\Python\Python313\Lib\site-packages\sqlalchemy\engine\base.py", line 1986, in _exec_single_context
    self._handle_dbapi_exception(
  File "C:\Users\pc\AppData\Local\Programs\Python\Python313\Lib\site-packages\sqlalchemy\engine\base.py", line 2366, in _handle_dbapi_exception
    raise exc_info[1].with_traceback(exc_info[2])
  File "C:\Users\pc\AppData\Local\Programs\Python\Python313\Lib\site-packages\sqlalchemy\engine\base.py", line 1967, in _exec_single_context
    self.dialect.do_execute(
  File "C:\Users\pc\AppData\Local\Programs\Python\Python313\Lib\site-packages\sqlalchemy\engine\default.py", line 952, in do_execute
    cursor.execute(statement, parameters)
sqlcipher3.dbapi2.OperationalError: table _alembic_tmp_journals already exists
2026-05-04 20:05:38.700 | ERROR    | local_deep_research.database.encrypted_db:open_user_database:656 - Database migration failed for srikbs8095 after 1034ms — refusing login
Traceback (most recent call last):
  File "C:\Users\pc\AppData\Local\Programs\Python\Python313\Lib\threading.py", line 1014, in _bootstrap
    self._bootstrap_inner()
  File "C:\Users\pc\AppData\Local\Programs\Python\Python313\Lib\threading.py", line 1043, in _bootstrap_inner
    self.run()
  File "C:\Users\pc\AppData\Local\Programs\Python\Python313\Lib\threading.py", line 994, in run
    self._target(*self._args, **self._kwargs)
  File "C:\Users\pc\AppData\Local\Programs\Python\Python313\Lib\socketserver.py", line 697, in process_request_thread
    self.finish_request(request, client_address)
  File "C:\Users\pc\AppData\Local\Programs\Python\Python313\Lib\socketserver.py", line 362, in finish_request
    self.RequestHandlerClass(request, client_address, self)
  File "C:\Users\pc\AppData\Local\Programs\Python\Python313\Lib\socketserver.py", line 766, in __init__
    self.handle()
  File "C:\Users\pc\AppData\Local\Programs\Python\Python313\Lib\site-packages\werkzeug\serving.py", line 399, in handle
    super().handle()
  File "C:\Users\pc\AppData\Local\Programs\Python\Python313\Lib\http\server.py", line 436, in handle
    self.handle_one_request()
  File "C:\Users\pc\AppData\Local\Programs\Python\Python313\Lib\http\server.py", line 424, in handle_one_request
    method()
  File "C:\Users\pc\AppData\Local\Programs\Python\Python313\Lib\site-packages\werkzeug\serving.py", line 371, in run_wsgi
    execute(self.server.app)
  File "C:\Users\pc\AppData\Local\Programs\Python\Python313\Lib\site-packages\werkzeug\serving.py", line 332, in execute
    application_iter = app(environ, start_response)
  File "C:\Users\pc\AppData\Local\Programs\Python\Python313\Lib\site-packages\flask\app.py", line 1536, in __call__
    return self.wsgi_app(environ, start_response)
  File "C:\Users\pc\AppData\Local\Programs\Python\Python313\Lib\site-packages\flask_socketio\__init__.py", line 42, in __call__
    return super().__call__(environ, start_response)
  File "C:\Users\pc\AppData\Local\Programs\Python\Python313\Lib\site-packages\engineio\middleware.py", line 74, in __call__
    return self.wsgi_app(environ, start_response)
  File "C:\Users\pc\AppData\Local\Programs\Python\Python313\Lib\site-packages\local_deep_research\web\app_factory.py", line 238, in __call__
    return self.wsgi_app(environ, custom_start_response)
  File "C:\Users\pc\AppData\Local\Programs\Python\Python313\Lib\site-packages\local_deep_research\web\app_factory.py", line 177, in __call__
    return self.wsgi_app(environ, custom_start_response)
  File "C:\Users\pc\AppData\Local\Programs\Python\Python313\Lib\site-packages\werkzeug\middleware\proxy_fix.py", line 183, in __call__
    return self.app(environ, start_response)
  File "C:\Users\pc\AppData\Local\Programs\Python\Python313\Lib\site-packages\flask\app.py", line 1511, in wsgi_app
    response = self.full_dispatch_request()
  File "C:\Users\pc\AppData\Local\Programs\Python\Python313\Lib\site-packages\flask\app.py", line 917, in full_dispatch_request
    rv = self.dispatch_request()
  File "C:\Users\pc\AppData\Local\Programs\Python\Python313\Lib\site-packages\flask\app.py", line 902, in dispatch_request
    return self.ensure_sync(self.view_functions[rule.endpoint])(**view_args)  # type: ignore[no-any-return]
  File "C:\Users\pc\AppData\Local\Programs\Python\Python313\Lib\site-packages\flask_limiter\_limits.py", line 326, in __inner
    return cast(R, flask.current_app.ensure_sync(obj)(*a, **k))
  File "C:\Users\pc\AppData\Local\Programs\Python\Python313\Lib\site-packages\local_deep_research\web\auth\routes.py", line 127, in login
    engine = db_manager.open_user_database(username, password)
> File "C:\Users\pc\AppData\Local\Programs\Python\Python313\Lib\site-packages\local_deep_research\database\encrypted_db.py", line 653, in open_user_database
    initialize_database(engine)
  File "C:\Users\pc\AppData\Local\Programs\Python\Python313\Lib\site-packages\local_deep_research\database\initialize.py", line 41, in initialize_database
    run_migrations(engine)
  File "C:\Users\pc\AppData\Local\Programs\Python\Python313\Lib\site-packages\local_deep_research\database\alembic_runner.py", line 351, in run_migrations
    command.upgrade(config, target)
  File "C:\Users\pc\AppData\Local\Programs\Python\Python313\Lib\site-packages\alembic\command.py", line 483, in upgrade
    script.run_env()
  File "C:\Users\pc\AppData\Local\Programs\Python\Python313\Lib\site-packages\alembic\script\base.py", line 545, in run_env
    util.load_python_file(self.dir, "env.py")
  File "C:\Users\pc\AppData\Local\Programs\Python\Python313\Lib\site-packages\alembic\util\pyfiles.py", line 116, in load_python_file
    module = load_module_py(module_id, path)
  File "C:\Users\pc\AppData\Local\Programs\Python\Python313\Lib\site-packages\alembic\util\pyfiles.py", line 136, in load_module_py
    spec.loader.exec_module(module)  # type: ignore
  File "<frozen importlib._bootstrap_external>", line 1026, in exec_module
  File "<frozen importlib._bootstrap>", line 488, in _call_with_frames_removed
  File "C:\Users\pc\AppData\Local\Programs\Python\Python313\Lib\site-packages\local_deep_research\database\migrations\env.py", line 57, in <module>
    run_migrations_online()
  File "C:\Users\pc\AppData\Local\Programs\Python\Python313\Lib\site-packages\local_deep_research\database\migrations\env.py", line 51, in run_migrations_online
    context.run_migrations()
  File "<string>", line 8, in run_migrations
  File "C:\Users\pc\AppData\Local\Programs\Python\Python313\Lib\site-packages\alembic\runtime\environment.py", line 969, in run_migrations
    self.get_context().run_migrations(**kw)
  File "C:\Users\pc\AppData\Local\Programs\Python\Python313\Lib\site-packages\alembic\runtime\migration.py", line 626, in run_migrations
    step.migration_fn(**kw)
  File "C:\Users\pc\AppData\Local\Programs\Python\Python313\Lib\site-packages\local_deep_research\database\migrations\versions\0006_journal_quality_system.py", line 339, in upgrade
    with op.batch_alter_table("journals") as batch_op:
  File "C:\Users\pc\AppData\Local\Programs\Python\Python313\Lib\contextlib.py", line 148, in __exit__
    next(self.gen)
  File "C:\Users\pc\AppData\Local\Programs\Python\Python313\Lib\site-packages\alembic\operations\base.py", line 408, in batch_alter_table
    impl.flush()
  File "C:\Users\pc\AppData\Local\Programs\Python\Python313\Lib\site-packages\alembic\operations\batch.py", line 163, in flush
    batch_impl._create(self.impl)
  File "C:\Users\pc\AppData\Local\Programs\Python\Python313\Lib\site-packages\alembic\operations\batch.py", line 447, in _create
    op_impl.create_table(self.new_table)
  File "C:\Users\pc\AppData\Local\Programs\Python\Python313\Lib\site-packages\alembic\ddl\impl.py", line 442, in create_table
    self._exec(schema.CreateTable(table, **kw))
  File "C:\Users\pc\AppData\Local\Programs\Python\Python313\Lib\site-packages\alembic\ddl\impl.py", line 256, in _exec
    return conn.execute(construct, params)
  File "C:\Users\pc\AppData\Local\Programs\Python\Python313\Lib\site-packages\sqlalchemy\engine\base.py", line 1419, in execute
    return meth(
  File "C:\Users\pc\AppData\Local\Programs\Python\Python313\Lib\site-packages\sqlalchemy\sql\ddl.py", line 187, in _execute_on_connection
    return connection._execute_ddl(
  File "C:\Users\pc\AppData\Local\Programs\Python\Python313\Lib\site-packages\sqlalchemy\engine\base.py", line 1530, in _execute_ddl
    ret = self._execute_context(
  File "C:\Users\pc\AppData\Local\Programs\Python\Python313\Lib\site-packages\sqlalchemy\engine\base.py", line 1846, in _execute_context
    return self._exec_single_context(
  File "C:\Users\pc\AppData\Local\Programs\Python\Python313\Lib\site-packages\sqlalchemy\engine\base.py", line 1986, in _exec_single_context
    self._handle_dbapi_exception(
  File "C:\Users\pc\AppData\Local\Programs\Python\Python313\Lib\site-packages\sqlalchemy\engine\base.py", line 2366, in _handle_dbapi_exception
    raise exc_info[1].with_traceback(exc_info[2])
  File "C:\Users\pc\AppData\Local\Programs\Python\Python313\Lib\site-packages\sqlalchemy\engine\base.py", line 1967, in _exec_single_context
    self.dialect.do_execute(
  File "C:\Users\pc\AppData\Local\Programs\Python\Python313\Lib\site-packages\sqlalchemy\engine\default.py", line 952, in do_execute
    cursor.execute(statement, parameters)
sqlcipher3.dbapi2.OperationalError: table _alembic_tmp_journals already exists
2026-05-04 20:05:38.702 | WARNING  | local_deep_research.web.auth.routes:login:129 - Login refused for srikbs8095: database initialisation failed (see traceback above). Lockout counter NOT incremented — credentials are valid.
2026-05-04 20:05:50.211 | INFO     | local_deep_research.scheduler.background:_run_cleanup_with_tracking:1653 - Cleanup successful: removed 0 inactive users
2026-05-04 20:05:51.001 | INFO     | local_deep_research.database.backup.backup_service:_create_backup_impl:286 - Created backup for user: ldr_backup_20260504_143550.db (2473984 bytes)
2026-05-04 20:05:51.002 | INFO     | local_deep_research.database.backup.backup_service:_cleanup_old_backups:448 - Cleaned up 1 old backups
2026-05-04 20:05:51.002 | INFO     | local_deep_research.database.encrypted_db:open_user_database:634 - Pre-migration backup created: C:\Users\pc\AppData\Local\local-deep-research\local-deep-research\encrypted_databases\backups\7e3dcf13b2dfe7c3\ldr_backup_20260504_143550.db
2026-05-04 20:05:51.003 | INFO     | local_deep_research.database.initialize:initialize_database:33 - Initializing database with 62 existing tables
2026-05-04 20:05:51.007 | WARNING  | local_deep_research.database.alembic_runner:run_migrations:341 - Database schema outdated (revision 0005, head is 0009) — applying migrations
2026-05-04 20:05:51.016 | ERROR    | local_deep_research.database.alembic_runner:run_migrations:353 - Database migration failed — database remains at previous revision (auto-rollback by transaction manager)
Traceback (most recent call last):
  File "C:\Users\pc\AppData\Local\Programs\Python\Python313\Lib\threading.py", line 1014, in _bootstrap
    self._bootstrap_inner()
  File "C:\Users\pc\AppData\Local\Programs\Python\Python313\Lib\threading.py", line 1043, in _bootstrap_inner
    self.run()
  File "C:\Users\pc\AppData\Local\Programs\Python\Python313\Lib\threading.py", line 994, in run
    self._target(*self._args, **self._kwargs)
  File "C:\Users\pc\AppData\Local\Programs\Python\Python313\Lib\socketserver.py", line 697, in process_request_thread
    self.finish_request(request, client_address)
  File "C:\Users\pc\AppData\Local\Programs\Python\Python313\Lib\socketserver.py", line 362, in finish_request
    self.RequestHandlerClass(request, client_address, self)
  File "C:\Users\pc\AppData\Local\Programs\Python\Python313\Lib\socketserver.py", line 766, in __init__
    self.handle()
  File "C:\Users\pc\AppData\Local\Programs\Python\Python313\Lib\site-packages\werkzeug\serving.py", line 399, in handle
    super().handle()
  File "C:\Users\pc\AppData\Local\Programs\Python\Python313\Lib\http\server.py", line 436, in handle
    self.handle_one_request()
  File "C:\Users\pc\AppData\Local\Programs\Python\Python313\Lib\http\server.py", line 424, in handle_one_request
    method()
  File "C:\Users\pc\AppData\Local\Programs\Python\Python313\Lib\site-packages\werkzeug\serving.py", line 371, in run_wsgi
    execute(self.server.app)
  File "C:\Users\pc\AppData\Local\Programs\Python\Python313\Lib\site-packages\werkzeug\serving.py", line 332, in execute
    application_iter = app(environ, start_response)
  File "C:\Users\pc\AppData\Local\Programs\Python\Python313\Lib\site-packages\flask\app.py", line 1536, in __call__
    return self.wsgi_app(environ, start_response)
  File "C:\Users\pc\AppData\Local\Programs\Python\Python313\Lib\site-packages\flask_socketio\__init__.py", line 42, in __call__
    return super().__call__(environ, start_response)
  File "C:\Users\pc\AppData\Local\Programs\Python\Python313\Lib\site-packages\engineio\middleware.py", line 74, in __call__
    return self.wsgi_app(environ, start_response)
  File "C:\Users\pc\AppData\Local\Programs\Python\Python313\Lib\site-packages\local_deep_research\web\app_factory.py", line 238, in __call__
    return self.wsgi_app(environ, custom_start_response)
  File "C:\Users\pc\AppData\Local\Programs\Python\Python313\Lib\site-packages\local_deep_research\web\app_factory.py", line 177, in __call__
    return self.wsgi_app(environ, custom_start_response)
  File "C:\Users\pc\AppData\Local\Programs\Python\Python313\Lib\site-packages\werkzeug\middleware\proxy_fix.py", line 183, in __call__
    return self.app(environ, start_response)
  File "C:\Users\pc\AppData\Local\Programs\Python\Python313\Lib\site-packages\flask\app.py", line 1511, in wsgi_app
    response = self.full_dispatch_request()
  File "C:\Users\pc\AppData\Local\Programs\Python\Python313\Lib\site-packages\flask\app.py", line 917, in full_dispatch_request
    rv = self.dispatch_request()
  File "C:\Users\pc\AppData\Local\Programs\Python\Python313\Lib\site-packages\flask\app.py", line 902, in dispatch_request
    return self.ensure_sync(self.view_functions[rule.endpoint])(**view_args)  # type: ignore[no-any-return]
  File "C:\Users\pc\AppData\Local\Programs\Python\Python313\Lib\site-packages\flask_limiter\_limits.py", line 326, in __inner
    return cast(R, flask.current_app.ensure_sync(obj)(*a, **k))
  File "C:\Users\pc\AppData\Local\Programs\Python\Python313\Lib\site-packages\local_deep_research\web\auth\routes.py", line 127, in login
    engine = db_manager.open_user_database(username, password)
  File "C:\Users\pc\AppData\Local\Programs\Python\Python313\Lib\site-packages\local_deep_research\database\encrypted_db.py", line 653, in open_user_database
    initialize_database(engine)
  File "C:\Users\pc\AppData\Local\Programs\Python\Python313\Lib\site-packages\local_deep_research\database\initialize.py", line 41, in initialize_database
    run_migrations(engine)
> File "C:\Users\pc\AppData\Local\Programs\Python\Python313\Lib\site-packages\local_deep_research\database\alembic_runner.py", line 351, in run_migrations
    command.upgrade(config, target)
  File "C:\Users\pc\AppData\Local\Programs\Python\Python313\Lib\site-packages\alembic\command.py", line 483, in upgrade
    script.run_env()
  File "C:\Users\pc\AppData\Local\Programs\Python\Python313\Lib\site-packages\alembic\script\base.py", line 545, in run_env
    util.load_python_file(self.dir, "env.py")
  File "C:\Users\pc\AppData\Local\Programs\Python\Python313\Lib\site-packages\alembic\util\pyfiles.py", line 116, in load_python_file
    module = load_module_py(module_id, path)
  File "C:\Users\pc\AppData\Local\Programs\Python\Python313\Lib\site-packages\alembic\util\pyfiles.py", line 136, in load_module_py
    spec.loader.exec_module(module)  # type: ignore
  File "<frozen importlib._bootstrap_external>", line 1026, in exec_module
  File "<frozen importlib._bootstrap>", line 488, in _call_with_frames_removed
  File "C:\Users\pc\AppData\Local\Programs\Python\Python313\Lib\site-packages\local_deep_research\database\migrations\env.py", line 57, in <module>
    run_migrations_online()
  File "C:\Users\pc\AppData\Local\Programs\Python\Python313\Lib\site-packages\local_deep_research\database\migrations\env.py", line 51, in run_migrations_online
    context.run_migrations()
  File "<string>", line 8, in run_migrations
  File "C:\Users\pc\AppData\Local\Programs\Python\Python313\Lib\site-packages\alembic\runtime\environment.py", line 969, in run_migrations
    self.get_context().run_migrations(**kw)
  File "C:\Users\pc\AppData\Local\Programs\Python\Python313\Lib\site-packages\alembic\runtime\migration.py", line 626, in run_migrations
    step.migration_fn(**kw)
  File "C:\Users\pc\AppData\Local\Programs\Python\Python313\Lib\site-packages\local_deep_research\database\migrations\versions\0006_journal_quality_system.py", line 339, in upgrade
    with op.batch_alter_table("journals") as batch_op:
  File "C:\Users\pc\AppData\Local\Programs\Python\Python313\Lib\contextlib.py", line 148, in __exit__
    next(self.gen)
  File "C:\Users\pc\AppData\Local\Programs\Python\Python313\Lib\site-packages\alembic\operations\base.py", line 408, in batch_alter_table
    impl.flush()
  File "C:\Users\pc\AppData\Local\Programs\Python\Python313\Lib\site-packages\alembic\operations\batch.py", line 163, in flush
    batch_impl._create(self.impl)
  File "C:\Users\pc\AppData\Local\Programs\Python\Python313\Lib\site-packages\alembic\operations\batch.py", line 447, in _create
    op_impl.create_table(self.new_table)
  File "C:\Users\pc\AppData\Local\Programs\Python\Python313\Lib\site-packages\alembic\ddl\impl.py", line 442, in create_table
    self._exec(schema.CreateTable(table, **kw))
  File "C:\Users\pc\AppData\Local\Programs\Python\Python313\Lib\site-packages\alembic\ddl\impl.py", line 256, in _exec
    return conn.execute(construct, params)
  File "C:\Users\pc\AppData\Local\Programs\Python\Python313\Lib\site-packages\sqlalchemy\engine\base.py", line 1419, in execute
    return meth(
  File "C:\Users\pc\AppData\Local\Programs\Python\Python313\Lib\site-packages\sqlalchemy\sql\ddl.py", line 187, in _execute_on_connection
    return connection._execute_ddl(
  File "C:\Users\pc\AppData\Local\Programs\Python\Python313\Lib\site-packages\sqlalchemy\engine\base.py", line 1530, in _execute_ddl
    ret = self._execute_context(
  File "C:\Users\pc\AppData\Local\Programs\Python\Python313\Lib\site-packages\sqlalchemy\engine\base.py", line 1846, in _execute_context
    return self._exec_single_context(
  File "C:\Users\pc\AppData\Local\Programs\Python\Python313\Lib\site-packages\sqlalchemy\engine\base.py", line 1986, in _exec_single_context
    self._handle_dbapi_exception(
  File "C:\Users\pc\AppData\Local\Programs\Python\Python313\Lib\site-packages\sqlalchemy\engine\base.py", line 2366, in _handle_dbapi_exception
    raise exc_info[1].with_traceback(exc_info[2])
  File "C:\Users\pc\AppData\Local\Programs\Python\Python313\Lib\site-packages\sqlalchemy\engine\base.py", line 1967, in _exec_single_context
    self.dialect.do_execute(
  File "C:\Users\pc\AppData\Local\Programs\Python\Python313\Lib\site-packages\sqlalchemy\engine\default.py", line 952, in do_execute
    cursor.execute(statement, parameters)
sqlcipher3.dbapi2.OperationalError: table _alembic_tmp_journals already exists
2026-05-04 20:05:51.018 | ERROR    | local_deep_research.database.encrypted_db:open_user_database:656 - Database migration failed for srikbs8095 after 925ms — refusing login
Traceback (most recent call last):
  File "C:\Users\pc\AppData\Local\Programs\Python\Python313\Lib\threading.py", line 1014, in _bootstrap
    self._bootstrap_inner()
  File "C:\Users\pc\AppData\Local\Programs\Python\Python313\Lib\threading.py", line 1043, in _bootstrap_inner
    self.run()
  File "C:\Users\pc\AppData\Local\Programs\Python\Python313\Lib\threading.py", line 994, in run
    self._target(*self._args, **self._kwargs)
  File "C:\Users\pc\AppData\Local\Programs\Python\Python313\Lib\socketserver.py", line 697, in process_request_thread
    self.finish_request(request, client_address)
  File "C:\Users\pc\AppData\Local\Programs\Python\Python313\Lib\socketserver.py", line 362, in finish_request
    self.RequestHandlerClass(request, client_address, self)
  File "C:\Users\pc\AppData\Local\Programs\Python\Python313\Lib\socketserver.py", line 766, in __init__
    self.handle()
  File "C:\Users\pc\AppData\Local\Programs\Python\Python313\Lib\site-packages\werkzeug\serving.py", line 399, in handle
    super().handle()
  File "C:\Users\pc\AppData\Local\Programs\Python\Python313\Lib\http\server.py", line 436, in handle
    self.handle_one_request()
  File "C:\Users\pc\AppData\Local\Programs\Python\Python313\Lib\http\server.py", line 424, in handle_one_request
    method()
  File "C:\Users\pc\AppData\Local\Programs\Python\Python313\Lib\site-packages\werkzeug\serving.py", line 371, in run_wsgi
    execute(self.server.app)
  File "C:\Users\pc\AppData\Local\Programs\Python\Python313\Lib\site-packages\werkzeug\serving.py", line 332, in execute
    application_iter = app(environ, start_response)
  File "C:\Users\pc\AppData\Local\Programs\Python\Python313\Lib\site-packages\flask\app.py", line 1536, in __call__
    return self.wsgi_app(environ, start_response)
  File "C:\Users\pc\AppData\Local\Programs\Python\Python313\Lib\site-packages\flask_socketio\__init__.py", line 42, in __call__
    return super().__call__(environ, start_response)
  File "C:\Users\pc\AppData\Local\Programs\Python\Python313\Lib\site-packages\engineio\middleware.py", line 74, in __call__
    return self.wsgi_app(environ, start_response)
  File "C:\Users\pc\AppData\Local\Programs\Python\Python313\Lib\site-packages\local_deep_research\web\app_factory.py", line 238, in __call__
    return self.wsgi_app(environ, custom_start_response)
  File "C:\Users\pc\AppData\Local\Programs\Python\Python313\Lib\site-packages\local_deep_research\web\app_factory.py", line 177, in __call__
    return self.wsgi_app(environ, custom_start_response)
  File "C:\Users\pc\AppData\Local\Programs\Python\Python313\Lib\site-packages\werkzeug\middleware\proxy_fix.py", line 183, in __call__
    return self.app(environ, start_response)
  File "C:\Users\pc\AppData\Local\Programs\Python\Python313\Lib\site-packages\flask\app.py", line 1511, in wsgi_app
    response = self.full_dispatch_request()
  File "C:\Users\pc\AppData\Local\Programs\Python\Python313\Lib\site-packages\flask\app.py", line 917, in full_dispatch_request
    rv = self.dispatch_request()
  File "C:\Users\pc\AppData\Local\Programs\Python\Python313\Lib\site-packages\flask\app.py", line 902, in dispatch_request
    return self.ensure_sync(self.view_functions[rule.endpoint])(**view_args)  # type: ignore[no-any-return]
  File "C:\Users\pc\AppData\Local\Programs\Python\Python313\Lib\site-packages\flask_limiter\_limits.py", line 326, in __inner
    return cast(R, flask.current_app.ensure_sync(obj)(*a, **k))
  File "C:\Users\pc\AppData\Local\Programs\Python\Python313\Lib\site-packages\local_deep_research\web\auth\routes.py", line 127, in login
    engine = db_manager.open_user_database(username, password)
> File "C:\Users\pc\AppData\Local\Programs\Python\Python313\Lib\site-packages\local_deep_research\database\encrypted_db.py", line 653, in open_user_database
    initialize_database(engine)
  File "C:\Users\pc\AppData\Local\Programs\Python\Python313\Lib\site-packages\local_deep_research\database\initialize.py", line 41, in initialize_database
    run_migrations(engine)
  File "C:\Users\pc\AppData\Local\Programs\Python\Python313\Lib\site-packages\local_deep_research\database\alembic_runner.py", line 351, in run_migrations
    command.upgrade(config, target)
  File "C:\Users\pc\AppData\Local\Programs\Python\Python313\Lib\site-packages\alembic\command.py", line 483, in upgrade
    script.run_env()
  File "C:\Users\pc\AppData\Local\Programs\Python\Python313\Lib\site-packages\alembic\script\base.py", line 545, in run_env
    util.load_python_file(self.dir, "env.py")
  File "C:\Users\pc\AppData\Local\Programs\Python\Python313\Lib\site-packages\alembic\util\pyfiles.py", line 116, in load_python_file
    module = load_module_py(module_id, path)
  File "C:\Users\pc\AppData\Local\Programs\Python\Python313\Lib\site-packages\alembic\util\pyfiles.py", line 136, in load_module_py
    spec.loader.exec_module(module)  # type: ignore
  File "<frozen importlib._bootstrap_external>", line 1026, in exec_module
  File "<frozen importlib._bootstrap>", line 488, in _call_with_frames_removed
  File "C:\Users\pc\AppData\Local\Programs\Python\Python313\Lib\site-packages\local_deep_research\database\migrations\env.py", line 57, in <module>
    run_migrations_online()
  File "C:\Users\pc\AppData\Local\Programs\Python\Python313\Lib\site-packages\local_deep_research\database\migrations\env.py", line 51, in run_migrations_online
    context.run_migrations()
  File "<string>", line 8, in run_migrations
  File "C:\Users\pc\AppData\Local\Programs\Python\Python313\Lib\site-packages\alembic\runtime\environment.py", line 969, in run_migrations
    self.get_context().run_migrations(**kw)
  File "C:\Users\pc\AppData\Local\Programs\Python\Python313\Lib\site-packages\alembic\runtime\migration.py", line 626, in run_migrations
    step.migration_fn(**kw)
  File "C:\Users\pc\AppData\Local\Programs\Python\Python313\Lib\site-packages\local_deep_research\database\migrations\versions\0006_journal_quality_system.py", line 339, in upgrade
    with op.batch_alter_table("journals") as batch_op:
  File "C:\Users\pc\AppData\Local\Programs\Python\Python313\Lib\contextlib.py", line 148, in __exit__
    next(self.gen)
  File "C:\Users\pc\AppData\Local\Programs\Python\Python313\Lib\site-packages\alembic\operations\base.py", line 408, in batch_alter_table
    impl.flush()
  File "C:\Users\pc\AppData\Local\Programs\Python\Python313\Lib\site-packages\alembic\operations\batch.py", line 163, in flush
    batch_impl._create(self.impl)
  File "C:\Users\pc\AppData\Local\Programs\Python\Python313\Lib\site-packages\alembic\operations\batch.py", line 447, in _create
    op_impl.create_table(self.new_table)
  File "C:\Users\pc\AppData\Local\Programs\Python\Python313\Lib\site-packages\alembic\ddl\impl.py", line 442, in create_table
    self._exec(schema.CreateTable(table, **kw))
  File "C:\Users\pc\AppData\Local\Programs\Python\Python313\Lib\site-packages\alembic\ddl\impl.py", line 256, in _exec
    return conn.execute(construct, params)
  File "C:\Users\pc\AppData\Local\Programs\Python\Python313\Lib\site-packages\sqlalchemy\engine\base.py", line 1419, in execute
    return meth(
  File "C:\Users\pc\AppData\Local\Programs\Python\Python313\Lib\site-packages\sqlalchemy\sql\ddl.py", line 187, in _execute_on_connection
    return connection._execute_ddl(
  File "C:\Users\pc\AppData\Local\Programs\Python\Python313\Lib\site-packages\sqlalchemy\engine\base.py", line 1530, in _execute_ddl
    ret = self._execute_context(
  File "C:\Users\pc\AppData\Local\Programs\Python\Python313\Lib\site-packages\sqlalchemy\engine\base.py", line 1846, in _execute_context
    return self._exec_single_context(
  File "C:\Users\pc\AppData\Local\Programs\Python\Python313\Lib\site-packages\sqlalchemy\engine\base.py", line 1986, in _exec_single_context
    self._handle_dbapi_exception(
  File "C:\Users\pc\AppData\Local\Programs\Python\Python313\Lib\site-packages\sqlalchemy\engine\base.py", line 2366, in _handle_dbapi_exception
    raise exc_info[1].with_traceback(exc_info[2])
  File "C:\Users\pc\AppData\Local\Programs\Python\Python313\Lib\site-packages\sqlalchemy\engine\base.py", line 1967, in _exec_single_context
    self.dialect.do_execute(
  File "C:\Users\pc\AppData\Local\Programs\Python\Python313\Lib\site-packages\sqlalchemy\engine\default.py", line 952, in do_execute
    cursor.execute(statement, parameters)
sqlcipher3.dbapi2.OperationalError: table _alembic_tmp_journals already exists
2026-05-04 20:05:51.020 | WARNING  | local_deep_research.web.auth.routes:login:129 - Login refused for srikbs8095: database initialisation failed (see traceback above). Lockout counter NOT incremented — credentials are valid.

Metadata

Metadata

Assignees

No one assigned

    Labels

    bugReports an unexpected problem. Issue-only label — use `bugfix` for PRs.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions