noneplugin / nonebot-plugin-shindan

Nonebot2 趣味占卜插件
MIT License
39 stars 10 forks source link

报错`no such table: nonebot_plugin_shindan_shindanrecord` #22

Closed SnowMoonSS closed 1 year ago

SnowMoonSS commented 1 year ago

终于解决了依赖的版本问题,pip那边不报错了,也能成功启动了,但是没有任何预设的占卜项目,手动添加报错如下:


04-20 19:09:54 [SUCCESS] nonebot | OneBot V11 1234567890| [message.group.normal]: Message -482404195 from 123456789@[群:123456789] '添加占卜 162207 今天是什么少女'
04-20 19:09:54 [INFO] nonebot | Event will be handled by Matcher(type='message', module=src.plugins.nonebot_plugin_shindan)
04-20 19:09:54 [INFO] nonebot | Matcher(type='message', module=src.plugins.nonebot_plugin_shindan) running complete
04-20 19:09:54 [ERROR] nonebot | Running Matcher(type='message', module=src.plugins.nonebot_plugin_shindan) failed.
Traceback (most recent call last):
  File "/home/snowmoonss/.pyenv/versions/alice/lib/python3.10/site-packages/sqlalchemy/engine/base.py", line 1964, in _exec_single_context
    self.dialect.do_execute(
  File "/home/snowmoonss/.pyenv/versions/alice/lib/python3.10/site-packages/sqlalchemy/engine/default.py", line 748, in do_execute
    cursor.execute(statement, parameters)
  File "/home/snowmoonss/.pyenv/versions/alice/lib/python3.10/site-packages/sqlalchemy/dialects/sqlite/aiosqlite.py", line 113, in execute
    self._adapt_connection._handle_exception(error)
  File "/home/snowmoonss/.pyenv/versions/alice/lib/python3.10/site-packages/sqlalchemy/dialects/sqlite/aiosqlite.py", line 254, in _handle_exception
    raise error
  File "/home/snowmoonss/.pyenv/versions/alice/lib/python3.10/site-packages/sqlalchemy/dialects/sqlite/aiosqlite.py", line 95, in execute
    self.await_(_cursor.execute(operation, parameters))
  File "/home/snowmoonss/.pyenv/versions/alice/lib/python3.10/site-packages/sqlalchemy/util/_concurrency_py3k.py", line 102, in await_only
    return current.driver.switch(awaitable)  # type: ignore[no-any-return]
  File "/home/snowmoonss/.pyenv/versions/alice/lib/python3.10/site-packages/sqlalchemy/util/_concurrency_py3k.py", line 160, in greenlet_spawn
    value = await result
  File "/home/snowmoonss/.pyenv/versions/alice/lib/python3.10/site-packages/aiosqlite/cursor.py", line 37, in execute
    await self._execute(self._cursor.execute, sql, parameters)
  File "/home/snowmoonss/.pyenv/versions/alice/lib/python3.10/site-packages/aiosqlite/cursor.py", line 31, in _execute
    return await self._conn._execute(fn, *args, **kwargs)
  File "/home/snowmoonss/.pyenv/versions/alice/lib/python3.10/site-packages/aiosqlite/core.py", line 129, in _execute
    return await future
  File "/home/snowmoonss/.pyenv/versions/alice/lib/python3.10/site-packages/aiosqlite/core.py", line 102, in run
    result = function()
sqlite3.OperationalError: no such table: nonebot_plugin_shindan_shindanrecord

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

Traceback (most recent call last):
  File "<string>", line 1, in <module>
  File "/home/snowmoonss/.pyenv/versions/3.10.8/lib/python3.10/multiprocessing/spawn.py", line 116, in spawn_main
    exitcode = _main(fd, parent_sentinel)
  File "/home/snowmoonss/.pyenv/versions/3.10.8/lib/python3.10/multiprocessing/spawn.py", line 129, in _main
    return self._bootstrap(parent_sentinel)
  File "/home/snowmoonss/.pyenv/versions/3.10.8/lib/python3.10/multiprocessing/process.py", line 314, in _bootstrap
    self.run()
  File "/home/snowmoonss/.pyenv/versions/3.10.8/lib/python3.10/multiprocessing/process.py", line 108, in run
    self._target(*self._args, **self._kwargs)
  File "/home/snowmoonss/.pyenv/versions/alice/lib/python3.10/site-packages/uvicorn/_subprocess.py", line 76, in subprocess_started
    target(sockets=sockets)
  File "/home/snowmoonss/.pyenv/versions/alice/lib/python3.10/site-packages/uvicorn/server.py", line 60, in run
    return asyncio.run(self.serve(sockets=sockets))
  File "/home/snowmoonss/.pyenv/versions/3.10.8/lib/python3.10/asyncio/runners.py", line 44, in run
    return loop.run_until_complete(main)
  File "/home/snowmoonss/.pyenv/versions/alice/lib/python3.10/site-packages/nonebot/message.py", line 141, in _check_matcher
    await _run_matcher(Matcher, bot, event, state, stack, dependency_cache)
> File "/home/snowmoonss/.pyenv/versions/alice/lib/python3.10/site-packages/nonebot/message.py", line 187, in _run_matcher
    await matcher.run(bot, event, state, stack, dependency_cache)
  File "/home/snowmoonss/.pyenv/versions/alice/lib/python3.10/site-packages/nonebot/internal/matcher/matcher.py", line 753, in run
    await self.simple_run(bot, event, state, stack, dependency_cache)
  File "/home/snowmoonss/.pyenv/versions/alice/lib/python3.10/site-packages/nonebot/internal/matcher/matcher.py", line 728, in simple_run
    await handler(
  File "/home/snowmoonss/.pyenv/versions/alice/lib/python3.10/site-packages/nonebot/dependencies/__init__.py", line 108, in __call__
    return await cast(Callable[..., Awaitable[R]], self.call)(**values)
  File "/home/snowmoonss/nonebot/Alice/src/plugins/nonebot_plugin_shindan/__init__.py", line 109, in _
    if resp := await shindan_manager.add_shindan(id, command, title):
  File "/home/snowmoonss/nonebot/Alice/src/plugins/nonebot_plugin_shindan/manager.py", line 31, in add_shindan
    await session.commit()
File "/home/snowmoonss/.pyenv/versions/alice/lib/python3.10/site-packages/sqlalchemy/ext/asyncio/session.py", line 810, in commit
    await greenlet_spawn(self.sync_session.commit)
  File "/home/snowmoonss/.pyenv/versions/alice/lib/python3.10/site-packages/sqlalchemy/util/_concurrency_py3k.py", line 167, in greenlet_spawn
    result = context.switch(value)
  File "/home/snowmoonss/.pyenv/versions/alice/lib/python3.10/site-packages/sqlalchemy/orm/session.py", line 1903, in commit
    trans.commit(_to_root=True)
  File "<string>", line 2, in commit
  File "/home/snowmoonss/.pyenv/versions/alice/lib/python3.10/site-packages/sqlalchemy/orm/state_changes.py", line 137, in _go
    ret_value = fn(self, *arg, **kw)
  File "/home/snowmoonss/.pyenv/versions/alice/lib/python3.10/site-packages/sqlalchemy/orm/session.py", line 1218, in commit
    self._prepare_impl()
  File "<string>", line 2, in _prepare_impl
  File "/home/snowmoonss/.pyenv/versions/alice/lib/python3.10/site-packages/sqlalchemy/orm/state_changes.py", line 137, in _go
    ret_value = fn(self, *arg, **kw)
  File "/home/snowmoonss/.pyenv/versions/alice/lib/python3.10/site-packages/sqlalchemy/orm/session.py", line 1193, in _prepare_impl
    self.session.flush()
  File "/home/snowmoonss/.pyenv/versions/alice/lib/python3.10/site-packages/sqlalchemy/orm/session.py", line 4155, in flush
    self._flush(objects)
  File "/home/snowmoonss/.pyenv/versions/alice/lib/python3.10/site-packages/sqlalchemy/orm/session.py", line 4291, in _flush
    with util.safe_reraise():
  File "/home/snowmoonss/.pyenv/versions/alice/lib/python3.10/site-packages/sqlalchemy/util/langhelpers.py", line 147, in __exit__
    raise exc_value.with_traceback(exc_tb)
  File "/home/snowmoonss/.pyenv/versions/alice/lib/python3.10/site-packages/sqlalchemy/orm/session.py", line 4252, in _flush
    flush_context.execute()
  File "/home/snowmoonss/.pyenv/versions/alice/lib/python3.10/site-packages/sqlalchemy/orm/unitofwork.py", line 467, in execute
    rec.execute(self)
  File "/home/snowmoonss/.pyenv/versions/alice/lib/python3.10/site-packages/sqlalchemy/orm/unitofwork.py", line 644, in execute
    util.preloaded.orm_persistence.save_obj(
  File "/home/snowmoonss/.pyenv/versions/alice/lib/python3.10/site-packages/sqlalchemy/orm/persistence.py", line 93, in save_obj
    _emit_insert_statements(
  File "/home/snowmoonss/.pyenv/versions/alice/lib/python3.10/site-packages/sqlalchemy/orm/persistence.py", line 1184, in _emit_insert_statements
    result = connection.execute(
  File "/home/snowmoonss/.pyenv/versions/alice/lib/python3.10/site-packages/sqlalchemy/engine/base.py", line 1414, in execute
    return meth(
File "/home/snowmoonss/.pyenv/versions/alice/lib/python3.10/site-packages/sqlalchemy/sql/elements.py", line 486, in _execute_on_connection
    return connection._execute_clauseelement(
  File "/home/snowmoonss/.pyenv/versions/alice/lib/python3.10/site-packages/sqlalchemy/engine/base.py", line 1638, in _execute_clauseelement
    ret = self._execute_context(
  File "/home/snowmoonss/.pyenv/versions/alice/lib/python3.10/site-packages/sqlalchemy/engine/base.py", line 1842, in _execute_context
    return self._exec_single_context(
  File "/home/snowmoonss/.pyenv/versions/alice/lib/python3.10/site-packages/sqlalchemy/engine/base.py", line 1983, in _exec_single_context
    self._handle_dbapi_exception(
  File "/home/snowmoonss/.pyenv/versions/alice/lib/python3.10/site-packages/sqlalchemy/engine/base.py", line 2326, in _handle_dbapi_exception
    raise sqlalchemy_exception.with_traceback(exc_info[2]) from e
  File "/home/snowmoonss/.pyenv/versions/alice/lib/python3.10/site-packages/sqlalchemy/engine/base.py", line 1964, in _exec_single_context
    self.dialect.do_execute(
  File "/home/snowmoonss/.pyenv/versions/alice/lib/python3.10/site-packages/sqlalchemy/engine/default.py", line 748, in do_execute
    cursor.execute(statement, parameters)
  File "/home/snowmoonss/.pyenv/versions/alice/lib/python3.10/site-packages/sqlalchemy/dialects/sqlite/aiosqlite.py", line 113, in execute
    self._adapt_connection._handle_exception(error)
  File "/home/snowmoonss/.pyenv/versions/alice/lib/python3.10/site-packages/sqlalchemy/dialects/sqlite/aiosqlite.py", line 254, in _handle_exception
    raise error
  File "/home/snowmoonss/.pyenv/versions/alice/lib/python3.10/site-packages/sqlalchemy/dialects/sqlite/aiosqlite.py", line 95, in execute
    self.await_(_cursor.execute(operation, parameters))
  File "/home/snowmoonss/.pyenv/versions/alice/lib/python3.10/site-packages/sqlalchemy/util/_concurrency_py3k.py", line 102, in await_only
    return current.driver.switch(awaitable)  # type: ignore[no-any-return]
  File "/home/snowmoonss/.pyenv/versions/alice/lib/python3.10/site-packages/sqlalchemy/util/_concurrency_py3k.py", line 160, in greenlet_spawn
    value = await result
  File "/home/snowmoonss/.pyenv/versions/alice/lib/python3.10/site-packages/aiosqlite/cursor.py", line 37, in execute
    await self._execute(self._cursor.execute, sql, parameters)
  File "/home/snowmoonss/.pyenv/versions/alice/lib/python3.10/site-packages/aiosqlite/cursor.py", line 31, in _execute
    return await self._conn._execute(fn, *args, **kwargs)
  File "/home/snowmoonss/.pyenv/versions/alice/lib/python3.10/site-packages/aiosqlite/core.py", line 129, in _execute
    return await future
  File "/home/snowmoonss/.pyenv/versions/alice/lib/python3.10/site-packages/aiosqlite/core.py", line 102, in run
    result = function()
sqlalchemy.exc.OperationalError: (sqlite3.OperationalError) no such table: nonebot_plugin_shindan_shindanrecord
[SQL: INSERT INTO nonebot_plugin_shindan_shindanrecord (shindan_id, command, title, mode) VALUES (?, ?, ?, ?)]
[parameters: ('162207', '今天是什么少女', '你的二次元少女化形象 ', 'image')]
(Background on this error at: https://sqlalche.me/e/20/e3q8)
···
MeetWq commented 1 year ago

你是pip装的还是手动装的?

SnowMoonSS commented 1 year ago

pip装了一次,然后为了解决命令冲突的问题弄了一份在src/plugins文件夹,目前的toml文件是这样的

[tool.poetry]
name = "Alice"
version = "0.1.0"
description = "Alice"
authors = []
readme = "README.md"

[tool.poetry.dependencies]
python = "^3.7.3"
nonebot2 = "^2.0.0-beta.1"

[tool.poetry.dev-dependencies]
nb-cli = "^0.6.0"

[tool.nonebot]
plugins = ["nonebot_plugin_apscheduler", "nonebot_plugin_datastore", "nonebot_plugin_htmlrender", "nonebot_plugin_randomtkk", "nonebot_plugin_gamedraw", "nonebot_plugin_heweather", "nonebot_plugin_hammer_nbnhhsh", "nonebot_plugin_horserace", "nonebot_plugin_ddcheck", "nonebot_plugin_guild_patch", "nonebot_plugin_translator", "nonebot_plugin_gspanel"]
plugin_dirs = ["src/plugins"]

[build-system]
requires = ["poetry_core>=1.0.0"]
build-backend = "poetry.core.masonry.api"
SnowMoonSS commented 1 year ago

啊这……神秘,我禁用src/plugins里的none-plugin-shindan,然后又重新用nb-cli重新安装了一次,启动后正常了。 然后在toml里去掉none-plugin-shindan,重新启用src/plugins里的none-plugin-shindan,同样一切正常。 没事了 capoo

MeetWq commented 1 year ago

插件里的 migrations 文件夹是用来建表的,有可能是你漏掉了