nonebot自带插件nonebot_plugin_orm报错导致无法启动项目 #587
Answered
by
ProgramRipper
dahaozi777
asked this question in
问答
-
每次启动项目时会询问,目标数据库未更新到最新迁移, 是否更新? [y/N]: 如果选择y后可以成功启动bot,但是关闭机器人后再启动就会出现如下报错 | Scheduler Started
03-26 21:40:52 [ERROR] uvicorn | Traceback (most recent call last):
File "C:\Users\dahaozi\.conda\envs\nb\Lib\site-packages\starlette\routing.py", line 693, in lifespan
async with self.lifespan_context(app) as maybe_state:
File "C:\Users\dahaozi\.conda\envs\nb\Lib\contextlib.py", line 210, in __aenter__
return await anext(self.gen)
^^^^^^^^^^^^^^^^^^^^^
File "C:\Users\dahaozi\.conda\envs\nb\Lib\site-packages\nonebot\drivers\fastapi.py", line 154, in _lifespan_manager
await self._lifespan.startup()
File "C:\Users\dahaozi\.conda\envs\nb\Lib\site-packages\nonebot\internal\driver\_lifespan.py", line 66, in startup
await self._run_lifespan_func(self._startup_funcs)
File "C:\Users\dahaozi\.conda\envs\nb\Lib\site-packages\nonebot\internal\driver\_lifespan.py", line 55, in _run_lifespan_func
await cast(ASYNC_LIFESPAN_FUNC, func)()
File "C:\Users\dahaozi\.conda\envs\nb\Lib\site-packages\nonebot_plugin_orm\__init__.py", line 84, in init_orm
await greenlet_spawn(migrate.check, alembic_config)
File "C:\Users\dahaozi\.conda\envs\nb\Lib\site-packages\sqlalchemy\util\_concurrency_py3k.py", line 203, in greenlet_spawn
result = context.switch(value)
^^^^^^^^^^^^^^^^^^^^^
File "C:\Users\dahaozi\.conda\envs\nb\Lib\site-packages\nonebot_plugin_orm\migrate.py", line 572, in check
raise AutogenerateDiffsDetected(f"检测到新的升级操作:\n{pformat(diffs)}")
nonebot_plugin_orm.exception.AutogenerateDiffsDetected: 检测到新的升级操作:
[('add_table',
Table('nonebot_plugin_dialectlist_messagecountcache', MetaData(), Column('id', Integer(), table=<nonebot_plugin_dialectlist_messagecountcache>, primary_key=True, nullable=False), Column('time', DateTime(), table=<nonebot_plugin_dialectlist_messagecountcache>, nullable=False), Column('session_id', Integer(), table=<nonebot_plugin_dialectlist_messagecountcache>, nullable=False), Column('session_bnum', Integer(), table=<nonebot_plugin_dialectlist_messagecountcache>, nullable=False), schema=None)),
('add_index',
Index('ix_nonebot_plugin_dialectlist_messagecountcache_session_id', Column('session_id', Integer(), table=<nonebot_plugin_dialectlist_messagecountcache>, nullable=False)))]
03-26 21:40:52 [ERROR] uvicorn | Application startup failed. Exiting. 导致只有每次关闭后用nb orm downgrade base重建数据库后才可重启bot |
Beta Was this translation helpful? Give feedback.
Answered by
ProgramRipper
Mar 29, 2025
Replies: 2 comments 6 replies
-
请参考orm文档,你需要的是 nb orm upgrade 升级数据库。 |
Beta Was this translation helpful? Give feedback.
6 replies
-
ChenXu233/nonebot_plugin_dialectlist#50 修复了此问题,你可以等待作者修复并发版,或者在开发时暂时使用 Caution 使用 |
Beta Was this translation helpful? Give feedback.
0 replies
Answer selected by
dahaozi777
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
ChenXu233/nonebot_plugin_dialectlist#50 修复了此问题,你可以等待作者修复并发版,或者在开发时暂时使用
nb orm sync
将数据库更新到最新状态Caution
使用
nb orm sync
可能会导致数据丢失、插件无法正常升级等问题,请仅在开发时使用