SAGIRI-kawaii / sagiri-bot

基于Graia Ariadne和Mirai的QQ机器人 SAGIRI-BOT
GNU Affero General Public License v3.0
696 stars 83 forks source link

连上 WebSocket 后数据库的迷之问题 ( MySQL ) #55

Closed nullqwertyuiop closed 2 years ago

nullqwertyuiop commented 3 years ago

生成 CP 文时机器人没反应,看了控制台发现报错了。 环境: MySQL 当时有连接 WebSocket,可能 WS 导致的问题。关闭 WS 连接后不继续报错。 报错如下:

Traceback (most recent call last):
  File "/root/sagiri-bot/SAGIRIBOT/ORM/AsyncORM.py", line 43, in execute
    result = await session.execute(sql, **kwargs)
  File "/usr/local/lib/python3.8/site-packages/sqlalchemy/ext/asyncio/session.py", line 157, in execute
    return await greenlet_spawn(
  File "/usr/local/lib/python3.8/site-packages/sqlalchemy/util/_concurrency_py3k.py", line 122, in greenlet_spawn
    result = context.switch(value)
  File "/usr/local/lib/python3.8/site-packages/sqlalchemy/orm/session.py", line 1680, in execute
    result = compile_state_cls.orm_setup_cursor_result(
  File "/usr/local/lib/python3.8/site-packages/sqlalchemy/orm/context.py", line 318, in orm_setup_cursor_result
    return loading.instances(result, querycontext)
  File "/usr/local/lib/python3.8/site-packages/sqlalchemy/orm/loading.py", line 142, in instances
    _prebuffered = list(chunks(None))
  File "/usr/local/lib/python3.8/site-packages/sqlalchemy/orm/loading.py", line 120, in chunks
    fetch = cursor._raw_all_rows()
  File "/usr/local/lib/python3.8/site-packages/sqlalchemy/engine/result.py", line 390, in _raw_all_rows
    make_row = self._row_getter
  File "/usr/local/lib/python3.8/site-packages/sqlalchemy/util/langhelpers.py", line 1164, in __get__
    obj.__dict__[self.__name__] = result = self.fget(obj)
  File "/usr/local/lib/python3.8/site-packages/sqlalchemy/engine/result.py", line 319, in _row_getter
    keymap = metadata._keymap
  File "/usr/local/lib/python3.8/site-packages/sqlalchemy/engine/cursor.py", line 1197, in _keymap
    self._we_dont_return_rows()
  File "/usr/local/lib/python3.8/site-packages/sqlalchemy/engine/cursor.py", line 1178, in _we_dont_return_rows
    util.raise_(
  File "/usr/local/lib/python3.8/site-packages/sqlalchemy/util/compat.py", line 211, in raise_
    raise exception
sqlalchemy.exc.ResourceClosedError: This result object does not return rows. It has been closed automatically.

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "/usr/local/lib/python3.8/site-packages/sqlalchemy/engine/base.py", line 958, in _rollback_impl
    self.engine.dialect.do_rollback(self.connection)
  File "/usr/local/lib/python3.8/site-packages/sqlalchemy/engine/default.py", line 667, in do_rollback
    dbapi_connection.rollback()
  File "/usr/local/lib/python3.8/site-packages/sqlalchemy/dialects/mysql/aiomysql.py", line 203, in rollback
    self.await_(self._connection.rollback())
  File "/usr/local/lib/python3.8/site-packages/sqlalchemy/util/_concurrency_py3k.py", line 62, in await_only
    return current.driver.switch(awaitable)
  File "/usr/local/lib/python3.8/site-packages/sqlalchemy/util/_concurrency_py3k.py", line 115, in greenlet_spawn
    value = await result
  File "/usr/local/lib/python3.8/site-packages/aiomysql/connection.py", line 358, in rollback
    await self._read_ok_packet()
  File "/usr/local/lib/python3.8/site-packages/aiomysql/connection.py", line 333, in _read_ok_packet
    raise OperationalError(2014, "Command Out of Sync")
pymysql.err.OperationalError: (2014, 'Command Out of Sync')

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

Traceback (most recent call last):
  File "/usr/local/lib/python3.8/site-packages/graia/broadcast/__init__.py", line 204, in Executor
    result = await run_always_await_safely(
  File "/usr/local/lib/python3.8/site-packages/graia/broadcast/utilles.py", line 30, in run_always_await_safely
    return await callable(*args, **kwargs)
  File "/root/sagiri-bot/SAGIRIBOT/Handler/Handlers/CPGeneratorHandler.py", line 27, in cp_generator_handler
    if result := await CPGeneratorHandler.handle(app, message, group, member):
  File "/root/sagiri-bot/SAGIRIBOT/Handler/Handlers/CPGeneratorHandler.py", line 39, in handle
    await update_user_call_count_plus1(group, member, UserCalledCount.functions, "functions")
  File "/root/sagiri-bot/SAGIRIBOT/utils.py", line 206, in update_user_call_count_plus1
    new_value = await orm.fetchone(
  File "/root/sagiri-bot/SAGIRIBOT/ORM/AsyncORM.py", line 55, in fetchone
    result = await self.execute(sql)
  File "/root/sagiri-bot/SAGIRIBOT/ORM/AsyncORM.py", line 47, in execute
    await session.rollback()
  File "/usr/local/lib/python3.8/site-packages/sqlalchemy/ext/asyncio/session.py", line 318, in rollback
    return await greenlet_spawn(self.sync_session.rollback)
  File "/usr/local/lib/python3.8/site-packages/sqlalchemy/util/_concurrency_py3k.py", line 120, in greenlet_spawn
    result = context.throw(*sys.exc_info())
  File "/usr/local/lib/python3.8/site-packages/sqlalchemy/orm/session.py", line 1392, in rollback
    self._transaction.rollback(_to_root=self.future)
  File "/usr/local/lib/python3.8/site-packages/sqlalchemy/orm/session.py", line 900, in rollback
    util.raise_(rollback_err[1], with_traceback=rollback_err[2])
  File "/usr/local/lib/python3.8/site-packages/sqlalchemy/util/compat.py", line 211, in raise_
    raise exception
  File "/usr/local/lib/python3.8/site-packages/sqlalchemy/orm/session.py", line 865, in rollback
    t[1].rollback()
  File "/usr/local/lib/python3.8/site-packages/sqlalchemy/engine/base.py", line 2308, in rollback
    self._do_rollback()
  File "/usr/local/lib/python3.8/site-packages/sqlalchemy/engine/base.py", line 2506, in _do_rollback
    self._close_impl(try_deactivate=True)
  File "/usr/local/lib/python3.8/site-packages/sqlalchemy/engine/base.py", line 2489, in _close_impl
    self._connection_rollback_impl()
  File "/usr/local/lib/python3.8/site-packages/sqlalchemy/engine/base.py", line 2481, in _connection_rollback_impl
    self.connection._rollback_impl()
  File "/usr/local/lib/python3.8/site-packages/sqlalchemy/engine/base.py", line 960, in _rollback_impl
    self._handle_dbapi_exception(e, None, None, None, None)
  File "/usr/local/lib/python3.8/site-packages/sqlalchemy/engine/base.py", line 1994, in _handle_dbapi_exception
    util.raise_(
  File "/usr/local/lib/python3.8/site-packages/sqlalchemy/util/compat.py", line 211, in raise_
    raise exception
  File "/usr/local/lib/python3.8/site-packages/sqlalchemy/engine/base.py", line 958, in _rollback_impl
    self.engine.dialect.do_rollback(self.connection)
  File "/usr/local/lib/python3.8/site-packages/sqlalchemy/engine/default.py", line 667, in do_rollback
    dbapi_connection.rollback()
  File "/usr/local/lib/python3.8/site-packages/sqlalchemy/dialects/mysql/aiomysql.py", line 203, in rollback
    self.await_(self._connection.rollback())
  File "/usr/local/lib/python3.8/site-packages/sqlalchemy/util/_concurrency_py3k.py", line 62, in await_only
    return current.driver.switch(awaitable)
  File "/usr/local/lib/python3.8/site-packages/sqlalchemy/util/_concurrency_py3k.py", line 115, in greenlet_spawn
    value = await result
  File "/usr/local/lib/python3.8/site-packages/aiomysql/connection.py", line 358, in rollback
    await self._read_ok_packet()
  File "/usr/local/lib/python3.8/site-packages/aiomysql/connection.py", line 333, in _read_ok_packet
    raise OperationalError(2014, "Command Out of Sync")
sqlalchemy.exc.OperationalError: (pymysql.err.OperationalError) (2014, 'Command Out of Sync')
(Background on this error at: http://sqlalche.me/e/14/e3q8)
nullqwertyuiop commented 3 years ago

补充:连接至前端管理页面即会报错,Sagiri-Bot 版本为 6 月 17 日的最新一个 commit。 出现该错误时无法在前端管理页面的功能管理显示可用群、控制群开关,但不影响机器人正常工作。

SAGIRI-kawaii commented 3 years ago

还是mysql报错?

nullqwertyuiop commented 3 years ago

是的 -------- 原始信息 --------由: ZAPHAKIEL @.> 日期: 2021/6/26 18:04 (GMT+08:00) 收件人: SAGIRI-kawaii/sagiri-bot @.> 抄送: nullqwertyuiop @.>, Author @.> 主题: Re: [SAGIRI-kawaii/sagiri-bot] 连上 WebSocket 后数据库的迷之问题 ( MySQL ) (#55)

还是mysql报错?

—You are receiving this because you authored the thread.Reply to this email directly, view it on GitHub, or unsubscribe.

[

{

@.***": "http://schema.org",

@.***": "EmailMessage",

"potentialAction": {

@.***": "ViewAction",

"target": "https://github.com/SAGIRI-kawaii/sagiri-bot/issues/55#issuecomment-868978977",

"url": "https://github.com/SAGIRI-kawaii/sagiri-bot/issues/55#issuecomment-868978977",

"name": "View Issue"

},

"description": "View this Issue on GitHub",

"publisher": {

@.***": "Organization",

"name": "GitHub",

"url": "https://github.com"

}

}

]

SAGIRI-kawaii commented 2 years ago

等更新新前端后若还有此问题再提一下(