noneplugin / nonebot-plugin-memes

Nonebot2 表情包制作插件
MIT License
227 stars 20 forks source link

Can't locate revision identified by '486a6e0eed5b' #111

Closed fsqhn closed 2 weeks ago

fsqhn commented 2 weeks ago

nb run 运行后报错代码如下: 08-26 09:04:43 [ERROR] uvicorn | Traceback (most recent call last): File "C:\bot\nonebot\bot1.venv\lib\site-packages\alembic\script\base.py", line 250, in _catch_revision_errors yield File "C:\bot\nonebot\bot1.venv\lib\site-packages\alembic\script\base.py", line 313, in get_revisions self.revision_map.getrevisions(id), File "C:\bot\nonebot\bot1.venv\lib\site-packages\alembic\script\revision.py", line 542, in get_revisions return sum([self.get_revisions(id_elem) for idelem in id], ()) File "C:\bot\nonebot\bot1.venv\lib\site-packages\alembic\script\revision.py", line 542, in return sum([self.get_revisions(id_elem) for idelem in id], ()) File "C:\bot\nonebot\bot1.venv\lib\site-packages\alembic\script\revision.py", line 565, in get_revisions return tuple( File "C:\bot\nonebot\bot1.venv\lib\site-packages\alembic\script\revision.py", line 566, in self._revision_for_ident(rev_id, branch_label) File "C:\bot\nonebot\bot1.venv\lib\site-packages\alembic\script\revision.py", line 637, in _revision_for_ident raise ResolutionError( alembic.script.revision.ResolutionError: No such revision or branch '486a6e0eed5b'

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

Traceback (most recent call last): File "C:\bot\nonebot\bot1.venv\lib\site-packages\starlette\routing.py", line 732, in lifespan async with self.lifespan_context(app) as maybe_state: File "C:\Users\Administrator\AppData\Local\Programs\Python\Python310\lib\contextlib.py", line 199, in aenter return await anext(self.gen) File "C:\bot\nonebot\bot1.venv\lib\site-packages\nonebot\drivers\fastapi.py", line 153, in _lifespan_manager await self._lifespan.startup() File "C:\bot\nonebot\bot1.venv\lib\site-packages\nonebot\internal\driver_lifespan.py", line 42, in startup await self._run_lifespan_func(self._startup_funcs) File "C:\bot\nonebot\bot1.venv\lib\site-packages\nonebot\internal\driver_lifespan.py", line 36, in _run_lifespan_func await cast(ASYNC_LIFESPAN_FUNC, func)() File "C:\bot\nonebot\bot1.venv\lib\site-packages\nonebot_plugin_orm__init.py", line 84, in init_orm await greenlet_spawn(migrate.check, alembic_config) File "C:\bot\nonebot\bot1.venv\lib\site-packages\sqlalchemy\util_concurrency_py3k.py", line 201, in greenlet_spawn result = context.throw(*sys.exc_info()) File "C:\bot\nonebot\bot1.venv\lib\site-packages\nonebot_plugin_orm\migrate.py", line 556, in check script.run_env() File "C:\bot\nonebot\bot1.venv\lib\site-packages\alembic\script\base.py", line 582, in run_env util.load_python_file(self.dir, "env.py") File "C:\bot\nonebot\bot1.venv\lib\site-packages\alembic\util\pyfiles.py", line 95, in load_python_file module = load_module_py(module_id, path) File "C:\bot\nonebot\bot1.venv\lib\site-packages\alembic\util\pyfiles.py", line 113, in load_module_py spec.loader.exec_module(module) # type: ignore File "", line 883, in exec_module File "", line 241, in _call_with_frames_removed File "C:\bot\nonebot\bot1.venv\lib\site-packages\nonebot_plugin_orm\templates\generic\env.py", line 90, in await_only(coro) File "C:\bot\nonebot\bot1.venv\lib\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:\bot\nonebot\bot1.venv\lib\site-packages\sqlalchemy\util_concurrency_py3k.py", line 196, in greenlet_spawn value = await result File "C:\bot\nonebot\bot1.venv\lib\site-packages\nonebot_plugin_orm\templates\generic\env.py", line 79, in run_migrations_online await connection.run_sync(do_run_migrations) File "C:\bot\nonebot\bot1.venv\lib\site-packages\sqlalchemy\ext\asyncio\engine.py", line 886, in run_sync return await greenlet_spawn( File "C:\bot\nonebot\bot1.venv\lib\site-packages\sqlalchemy\util_concurrency_py3k.py", line 203, in greenlet_spawn result = context.switch(value) File "C:\bot\nonebot\bot1.venv\lib\site-packages\nonebot_plugin_orm\templates\generic\env.py", line 69, in do_run_migrations context.run_migrations() File "", line 8, in run_migrations File "C:\bot\nonebot\bot1.venv\lib\site-packages\alembic\runtime\environment.py", line 946, in run_migrations self.get_context().run_migrations(**kw) File "C:\bot\nonebot\bot1.venv\lib\site-packages\alembic\runtime\migration.py", line 616, in run_migrations for step in self._migrations_fn(heads, self): File "C:\bot\nonebot\bot1.venv\lib\site-packages\nonebot_plugin_orm\migrate.py", line 541, in retrieve_migrations if set(script.get_revisions(rev)) != set(script.get_revisions("heads")): File "C:\bot\nonebot\bot1.venv\lib\site-packages\alembic\script\base.py", line 310, in get_revisions with self._catch_revision_errors(): File "C:\Users\Administrator\AppData\Local\Programs\Python\Python310\lib\contextlib.py", line 153, in exit__ self.gen.throw(typ, value, traceback) File "C:\bot\nonebot\bot1.venv\lib\site-packages\alembic\script\base.py", line 282, in _catch_revision_errors raise util.CommandError(resolution) from re alembic.util.exc.CommandError: Can't locate revision identified by '486a6e0eed5b'

08-26 09:04:43 [ERROR] uvicorn | Application startup failed. Exiting.

然后整个nonebot会停在这。卸载掉本插件后就没有相关报错并正常运行。丢给ai分析说是这段日志显示了在使用 Alembic 进行数据库迁移时遇到的错误。错误的核心是一个 ResolutionError,它表明 Alembic 无法找到指定的修订版本或分支 '486a6e0eed5b'。 但我理论上就执行了一堆的插件更新指令而已。plugin-orm那边更是完全没看懂,但应该没动过?有点懵,不知道该如何处理。 用的nbcil搭的nonebot2,虚拟环境。

fsqhn commented 2 weeks ago

系统是阿里云服务器的Windows Server 2022 Datacenter
python版本python 3.10.9

MeetWq commented 2 weeks ago

你之前应该装过依赖 plugin-orm 的插件,然后又卸载了,但是 orm 的数据库里仍有记录,所以找不到那个插件的迁移脚本 解决方法:

  1. 把原先依赖 orm 的插件装回来,并运行 nb orm upgrade 升级数据库
  2. 找到 orm 的数据库,找到其中的 alembic_version 表,删掉报错中出现的 486a6e0eed5b;orm 数据库默认在 C:\Users\<username>\AppData\Local\nonebot2\nonebot-plugin-orm\db.sqlite3
  3. 如果以上方法都不明白,又不在意数据的话,可以直接删掉 orm 数据库,包好的,把 C:\Users\<username>\AppData\Local\nonebot2\nonebot-plugin-orm 文件夹删掉即可
fsqhn commented 2 weeks ago

谢谢佬,用了方法3,直接搞掂了。虽然代价是隔壁群聊学习插件好像也被波及了。 算了,重新学而已,小问题。能跑就行.jpg