nonebot-plugin-access-control icon indicating copy to clipboard operation
nonebot-plugin-access-control copied to clipboard

SQLite连接错误导致插件报错

Open CN171-1 opened this issue 5 months ago • 0 comments

如题,该报错发生在Bot服务刚刚启动时,不知道是因为我装插件的时候搞错了,还是因为什么,不过该报错貌似并不影响插件的正常使用

track:

07-11 09:09:49 [ERROR] nonebot | Error when running RunPreProcessors. Running cancelled!
Traceback (most recent call last):
  File "C:\Users\LLS\AppData\Roaming\Python\Python313\site-packages\nonebot_plugin_access_control\repository\utils.py", line 14, in use_ac_session
    yield _ac_current_session.get()
LookupError: <ContextVar name='ac_current_session' at 0x000001C120ACAA20>

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "C:\Users\LLS\AppData\Roaming\Python\Python313\site-packages\nonebot_plugin_access_control\repository\utils.py", line 21, in use_ac_session
    yield session
  File "C:\Users\LLS\AppData\Roaming\Python\Python313\site-packages\nonebot_plugin_access_control\service\_impl\patcher.py", line 105, in check
    await service.check(bot, event, throw_on_fail=True)
  File "C:\Users\LLS\AppData\Roaming\Python\Python313\site-packages\nonebot_plugin_access_control_api\service\interface\service_base.py", line 66, in check
    return await self.check_by_subject(
  File "C:\Users\LLS\AppData\Roaming\Python\Python313\site-packages\nonebot_plugin_access_control_api\service\service.py", line 55, in check_by_subject
    allow = await self.check_permission(*subjects)
  File "C:\Users\LLS\AppData\Roaming\Python\Python313\site-packages\nonebot_plugin_access_control_api\service\service.py", line 108, in check_permission
    return await self._permission_impl.check_permission(*subject)
  File "C:\Users\LLS\AppData\Roaming\Python\Python313\site-packages\nonebot_plugin_access_control\service\_impl\permission.py", line 163, in check_permission
    p = await self.get_permission_by_subject(*subject)
  File "C:\Users\LLS\AppData\Roaming\Python\Python313\site-packages\nonebot_plugin_access_control\service\_impl\permission.py", line 57, in get_permission_by_subject
    async for p in self.repo.get_permissions(node, sub):
  File "C:\Users\LLS\AppData\Roaming\Python\Python313\site-packages\nonebot_plugin_access_control\repository\permission\impl.py", line 29, in get_permissions
    async for x in await session.stream_scalars(stmt):
  File "C:\Users\LLS\AppData\Roaming\Python\Python313\site-packages\sqlalchemy\ext\asyncio\session.py", line 750, in stream_scalars
    result = await self.stream(
  File "C:\Users\LLS\AppData\Roaming\Python\Python313\site-packages\sqlalchemy\ext\asyncio\session.py", line 695, in stream
    result = await greenlet_spawn(
  File "C:\Users\LLS\AppData\Roaming\Python\Python313\site-packages\sqlalchemy\util\_concurrency_py3k.py", line 201, in greenlet_spawn
    result = context.throw(*sys.exc_info())
  File "C:\Users\LLS\AppData\Roaming\Python\Python313\site-packages\sqlalchemy\orm\session.py", line 2365, in execute
    return self._execute_internal(
  File "C:\Users\LLS\AppData\Roaming\Python\Python313\site-packages\sqlalchemy\orm\session.py", line 2251, in _execute_internal
    result: Result[Any] = compile_state_cls.orm_execute_statement(
  File "C:\Users\LLS\AppData\Roaming\Python\Python313\site-packages\sqlalchemy\orm\context.py", line 306, in orm_execute_statement
    result = conn.execute(
  File "C:\Users\LLS\AppData\Roaming\Python\Python313\site-packages\sqlalchemy\engine\base.py", line 1415, in execute
    return meth(
  File "C:\Users\LLS\AppData\Roaming\Python\Python313\site-packages\sqlalchemy\sql\elements.py", line 523, in _execute_on_connection
    return connection._execute_clauseelement(
  File "C:\Users\LLS\AppData\Roaming\Python\Python313\site-packages\sqlalchemy\engine\base.py", line 1637, in _execute_clauseelement
    ret = self._execute_context(
  File "C:\Users\LLS\AppData\Roaming\Python\Python313\site-packages\sqlalchemy\engine\base.py", line 1842, in _execute_context
    return self._exec_single_context(
  File "C:\Users\LLS\AppData\Roaming\Python\Python313\site-packages\sqlalchemy\engine\base.py", line 1982, in _exec_single_context
    self._handle_dbapi_exception(
  File "C:\Users\LLS\AppData\Roaming\Python\Python313\site-packages\sqlalchemy\engine\base.py", line 2364, in _handle_dbapi_exception
    self.invalidate(e)
  File "C:\Users\LLS\AppData\Roaming\Python\Python313\site-packages\sqlalchemy\engine\base.py", line 749, in invalidate
    pool_proxied_connection.invalidate(exception)
  File "C:\Users\LLS\AppData\Roaming\Python\Python313\site-packages\sqlalchemy\pool\base.py", line 1475, in invalidate
    self._connection_record.invalidate(e=e, soft=soft)
  File "C:\Users\LLS\AppData\Roaming\Python\Python313\site-packages\sqlalchemy\pool\base.py", line 817, in invalidate
    self.__close(terminate=True)
  File "C:\Users\LLS\AppData\Roaming\Python\Python313\site-packages\sqlalchemy\pool\base.py", line 884, in __close
    self.__pool._close_connection(
  File "C:\Users\LLS\AppData\Roaming\Python\Python313\site-packages\sqlalchemy\pool\base.py", line 374, in _close_connection
    self._dialect.do_terminate(connection)
  File "C:\Users\LLS\AppData\Roaming\Python\Python313\site-packages\sqlalchemy\engine\default.py", line 709, in do_terminate
    self.do_close(dbapi_connection)
  File "C:\Users\LLS\AppData\Roaming\Python\Python313\site-packages\sqlalchemy\engine\default.py", line 712, in do_close
    dbapi_connection.close()
  File "C:\Users\LLS\AppData\Roaming\Python\Python313\site-packages\sqlalchemy\dialects\sqlite\aiosqlite.py", line 277, in close
    self.await_(self._connection.close())
  File "C:\Users\LLS\AppData\Roaming\Python\Python313\site-packages\sqlalchemy\util\_concurrency_py3k.py", line 132, in await_only
    return current.parent.switch(awaitable)  # type: ignore[no-any-return,attr-defined] # noqa: E501
  File "C:\Users\LLS\AppData\Roaming\Python\Python313\site-packages\sqlalchemy\util\_concurrency_py3k.py", line 196, in greenlet_spawn
    value = await result
  File "C:\Users\LLS\AppData\Roaming\Python\Python313\site-packages\aiosqlite\core.py", line 168, in close
    await self._execute(self._conn.close)
  File "C:\Users\LLS\AppData\Roaming\Python\Python313\site-packages\aiosqlite\core.py", line 122, in _execute
    return await future
asyncio.exceptions.CancelledError: Cancelled by cancel scope 1c12108f540

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "C:\Users\LLS\AppData\Roaming\Python\Python313\site-packages\sqlalchemy\dialects\sqlite\aiosqlite.py", line 265, in rollback
    self.await_(self._connection.rollback())
  File "C:\Users\LLS\AppData\Roaming\Python\Python313\site-packages\sqlalchemy\util\_concurrency_py3k.py", line 132, in await_only
    return current.parent.switch(awaitable)  # type: ignore[no-any-return,attr-defined] # noqa: E501
  File "C:\Users\LLS\AppData\Roaming\Python\Python313\site-packages\sqlalchemy\util\_concurrency_py3k.py", line 196, in greenlet_spawn
    value = await result
  File "C:\Users\LLS\AppData\Roaming\Python\Python313\site-packages\aiosqlite\core.py", line 159, in rollback
    await self._execute(self._conn.rollback)
  File "C:\Users\LLS\AppData\Roaming\Python\Python313\site-packages\aiosqlite\core.py", line 73, in _conn
    raise ValueError("no active connection")
ValueError: no active connection

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

Traceback (most recent call last):
  File "C:\Users\LLS\AppData\Roaming\Python\Python313\site-packages\sqlalchemy\engine\base.py", line 1124, in _rollback_impl
    self.engine.dialect.do_rollback(self.connection)
  File "C:\Users\LLS\AppData\Roaming\Python\Python313\site-packages\sqlalchemy\engine\default.py", line 703, in do_rollback
    dbapi_connection.rollback()
  File "C:\Users\LLS\AppData\Roaming\Python\Python313\site-packages\sqlalchemy\dialects\sqlite\aiosqlite.py", line 267, in rollback
    self._handle_exception(error)
  File "C:\Users\LLS\AppData\Roaming\Python\Python313\site-packages\sqlalchemy\dialects\sqlite\aiosqlite.py", line 296, in _handle_exception
    raise self.dbapi.sqlite.OperationalError(
sqlite3.OperationalError: no active connection

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

Traceback (most recent call last):
  File "D:\Bot\cn171bot\nb2\bot.py", line 47, in <module>
    nonebot.run(app="__mp_main__:app")
  File "C:\Users\LLS\AppData\Roaming\Python\Python313\site-packages\nonebot\__init__.py", line 337, in run
    get_driver().run(*args, **kwargs)
  File "C:\Users\LLS\AppData\Roaming\Python\Python313\site-packages\nonebot\drivers\fastapi.py", line 187, in run
    uvicorn.run(
  File "C:\Users\LLS\AppData\Roaming\Python\Python313\site-packages\uvicorn\main.py", line 580, in run
    server.run()
  File "C:\Users\LLS\AppData\Roaming\Python\Python313\site-packages\uvicorn\server.py", line 67, in run
    return asyncio.run(self.serve(sockets=sockets))
  File "C:\Program Files\Python313\Lib\asyncio\runners.py", line 194, in run
    return runner.run(main)
  File "C:\Program Files\Python313\Lib\asyncio\runners.py", line 118, in run
    return self._loop.run_until_complete(task)
  File "C:\Program Files\Python313\Lib\asyncio\base_events.py", line 708, in run_until_complete
    self.run_forever()
  File "C:\Program Files\Python313\Lib\asyncio\base_events.py", line 679, in run_forever
    self._run_once()
  File "C:\Program Files\Python313\Lib\asyncio\base_events.py", line 2028, in _run_once
    handle = None  # Needed to break cycles when an exception occurs.
  File "C:\Program Files\Python313\Lib\asyncio\events.py", line 105, in _run
    self = None  # Needed to break cycles when an exception occurs.
> File "C:\Users\LLS\AppData\Roaming\Python\Python313\site-packages\nonebot\utils.py", line 238, in run_coro_with_catch
    return await coro
  File "C:\Users\LLS\AppData\Roaming\Python\Python313\site-packages\nonebot\dependencies\__init__.py", line 113, in __call__
    return await cast(Callable[..., Awaitable[R]], self.call)(**values)
  File "C:\Users\LLS\AppData\Roaming\Python\Python313\site-packages\nonebot_plugin_access_control\service\_impl\patcher.py", line 104, in check
    async with use_ac_session():
  File "C:\Program Files\Python313\Lib\contextlib.py", line 235, in __aexit__
    await self.gen.athrow(value)
  File "C:\Users\LLS\AppData\Roaming\Python\Python313\site-packages\nonebot_plugin_access_control\repository\utils.py", line 23, in use_ac_session
    await session.close()
  File "C:\Users\LLS\AppData\Roaming\Python\Python313\site-packages\sqlalchemy\ext\asyncio\session.py", line 1030, in close
    await greenlet_spawn(self.sync_session.close)
  File "C:\Users\LLS\AppData\Roaming\Python\Python313\site-packages\sqlalchemy\util\_concurrency_py3k.py", line 203, in greenlet_spawn
    result = context.switch(value)
  File "C:\Users\LLS\AppData\Roaming\Python\Python313\site-packages\sqlalchemy\orm\session.py", line 2521, in close
    self._close_impl(invalidate=False)
  File "C:\Users\LLS\AppData\Roaming\Python\Python313\site-packages\sqlalchemy\orm\session.py", line 2590, in _close_impl
    transaction.close(invalidate)
  File "<string>", line 2, in close
  File "C:\Users\LLS\AppData\Roaming\Python\Python313\site-packages\sqlalchemy\orm\state_changes.py", line 139, in _go
    ret_value = fn(self, *arg, **kw)
  File "C:\Users\LLS\AppData\Roaming\Python\Python313\site-packages\sqlalchemy\orm\session.py", line 1419, in close
    transaction.close()
  File "C:\Users\LLS\AppData\Roaming\Python\Python313\site-packages\sqlalchemy\engine\base.py", line 2585, in close
    self._do_close()
  File "C:\Users\LLS\AppData\Roaming\Python\Python313\site-packages\sqlalchemy\engine\base.py", line 2723, in _do_close
    self._close_impl()
  File "C:\Users\LLS\AppData\Roaming\Python\Python313\site-packages\sqlalchemy\engine\base.py", line 2709, in _close_impl
    self._connection_rollback_impl()
  File "C:\Users\LLS\AppData\Roaming\Python\Python313\site-packages\sqlalchemy\engine\base.py", line 2701, in _connection_rollback_impl
    self.connection._rollback_impl()
  File "C:\Users\LLS\AppData\Roaming\Python\Python313\site-packages\sqlalchemy\engine\base.py", line 1126, in _rollback_impl
    self._handle_dbapi_exception(e, None, None, None, None)
  File "C:\Users\LLS\AppData\Roaming\Python\Python313\site-packages\sqlalchemy\engine\base.py", line 2351, in _handle_dbapi_exception
    raise sqlalchemy_exception.with_traceback(exc_info[2]) from e
  File "C:\Users\LLS\AppData\Roaming\Python\Python313\site-packages\sqlalchemy\engine\base.py", line 1124, in _rollback_impl
    self.engine.dialect.do_rollback(self.connection)
  File "C:\Users\LLS\AppData\Roaming\Python\Python313\site-packages\sqlalchemy\engine\default.py", line 703, in do_rollback
    dbapi_connection.rollback()
  File "C:\Users\LLS\AppData\Roaming\Python\Python313\site-packages\sqlalchemy\dialects\sqlite\aiosqlite.py", line 267, in rollback
    self._handle_exception(error)
  File "C:\Users\LLS\AppData\Roaming\Python\Python313\site-packages\sqlalchemy\dialects\sqlite\aiosqlite.py", line 296, in _handle_exception
    raise self.dbapi.sqlite.OperationalError(
sqlalchemy.exc.OperationalError: (sqlite3.OperationalError) no active connection
(Background on this error at: https://sqlalche.me/e/20/e3q8)

CN171-1 avatar Jul 11 '25 01:07 CN171-1