Skip to content

[Bug] 确保 MySQL 数据库存在失败: unpack requires a buffer of 4 bytes #65

@ChenXun-123

Description

@ChenXun-123

Plugin Version

Next-2.0.5

AstrBot Version

v4.13.1

Database Type

MySQL

Operating System

Docker

Bug Description

MySQL 数据库链接失败
IP 和 端口号 都正确无误

Steps to Reproduce

  1. 安装插件
  2. 配置数据库
  3. 保存

Expected Behavior

确保 MySQL 数据库存在失败: unpack requires a buffer of 4 bytes

Error Logs

Astrbot日志
"""
 [11:12:12] [Plug] [INFO] [core.plugin_lifecycle:323]: 尝试启动数据库管理器 (第 1/3 次) 
 [11:12:12] [Plug] [INFO] [database.sqlalchemy_database_manager:66]: [DomainRouter] 开始启动… 
 [11:12:12] [Plug] [ERRO] [v4.13.1] [database.sqlalchemy_database_manager:182]: [DomainRouter] 确保 MySQL 数据库存在失败: unpack requires a buffer of 4 bytes 
 [11:12:12] [Plug] [ERRO] [v4.13.1] [database.sqlalchemy_database_manager:93]: [DomainRouter] 启动失败: unpack requires a buffer of 4 bytes 
Traceback (most recent call last):
  File "/AstrBot/data/plugins/astrbot_plugin_self_learning/services/database/sqlalchemy_database_manager.py", line 71, in start
    await self._ensure_mysql_database_exists()
  File "/AstrBot/data/plugins/astrbot_plugin_self_learning/services/database/sqlalchemy_database_manager.py", line 162, in _ensure_mysql_database_exists
    conn = await aiomysql.connect(
           ^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.11/site-packages/aiomysql/connection.py", line 74, in _connect
    await conn._connect()
  File "/usr/local/lib/python3.11/site-packages/aiomysql/connection.py", line 539, in _connect
    await self._get_server_information()
  File "/usr/local/lib/python3.11/site-packages/aiomysql/connection.py", line 1058, in _get_server_information
    self.server_thread_id = struct.unpack('<I', data[i:i + 4])
                            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
struct.error: unpack requires a buffer of 4 bytes
 [11:12:12] [Plug] [WARN] [v4.13.1] [core.plugin_lifecycle:329]: 数据库管理器启动返回 False (尝试 1/3) 
 [11:12:13] [Plug] [INFO] [database.sqlalchemy_database_manager:66]: [DomainRouter] 开始启动… 
 [11:12:13] [Plug] [ERRO] [v4.13.1] [database.sqlalchemy_database_manager:182]: [DomainRouter] 确保 MySQL 数据库存在失败: unpack requires a buffer of 4 bytes 
 [11:12:13] [Plug] [ERRO] [v4.13.1] [database.sqlalchemy_database_manager:93]: [DomainRouter] 启动失败: unpack requires a buffer of 4 bytes 
Traceback (most recent call last):
  File "/AstrBot/data/plugins/astrbot_plugin_self_learning/services/database/sqlalchemy_database_manager.py", line 71, in start
    await self._ensure_mysql_database_exists()
  File "/AstrBot/data/plugins/astrbot_plugin_self_learning/services/database/sqlalchemy_database_manager.py", line 162, in _ensure_mysql_database_exists
    conn = await aiomysql.connect(
           ^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.11/site-packages/aiomysql/connection.py", line 74, in _connect
    await conn._connect()
  File "/usr/local/lib/python3.11/site-packages/aiomysql/connection.py", line 539, in _connect
    await self._get_server_information()
  File "/usr/local/lib/python3.11/site-packages/aiomysql/connection.py", line 1058, in _get_server_information
    self.server_thread_id = struct.unpack('<I', data[i:i + 4])
                            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
struct.error: unpack requires a buffer of 4 bytes
 [11:12:13] [Plug] [ERRO] [v4.13.1] [webui.manager:105]: 启动数据库管理器失败: 数据库管理器启动失败 
Traceback (most recent call last):
  File "/AstrBot/data/plugins/astrbot_plugin_self_learning/webui/manager.py", line 103, in immediate_start
    raise RuntimeError("数据库管理器启动失败")
RuntimeError: 数据库管理器启动失败
 [11:12:14] [Plug] [INFO] [core.plugin_lifecycle:323]: 尝试启动数据库管理器 (第 2/3 次) 
 [11:12:14] [Plug] [INFO] [database.sqlalchemy_database_manager:66]: [DomainRouter] 开始启动… 
 [11:12:14] [Plug] [ERRO] [v4.13.1] [database.sqlalchemy_database_manager:182]: [DomainRouter] 确保 MySQL 数据库存在失败: unpack requires a buffer of 4 bytes 
 [11:12:14] [Plug] [ERRO] [v4.13.1] [database.sqlalchemy_database_manager:93]: [DomainRouter] 启动失败: unpack requires a buffer of 4 bytes 
Traceback (most recent call last):
  File "/AstrBot/data/plugins/astrbot_plugin_self_learning/services/database/sqlalchemy_database_manager.py", line 71, in start
    await self._ensure_mysql_database_exists()
  File "/AstrBot/data/plugins/astrbot_plugin_self_learning/services/database/sqlalchemy_database_manager.py", line 162, in _ensure_mysql_database_exists
    conn = await aiomysql.connect(
           ^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.11/site-packages/aiomysql/connection.py", line 74, in _connect
    await conn._connect()
  File "/usr/local/lib/python3.11/site-packages/aiomysql/connection.py", line 539, in _connect
    await self._get_server_information()
  File "/usr/local/lib/python3.11/site-packages/aiomysql/connection.py", line 1058, in _get_server_information
    self.server_thread_id = struct.unpack('<I', data[i:i + 4])
                            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
struct.error: unpack requires a buffer of 4 bytes
 [11:12:14] [Plug] [WARN] [v4.13.1] [core.plugin_lifecycle:329]: 数据库管理器启动返回 False (尝试 2/3) 
 [11:12:16] [Plug] [INFO] [core.plugin_lifecycle:323]: 尝试启动数据库管理器 (第 3/3 次) 
 [11:12:16] [Plug] [INFO] [database.sqlalchemy_database_manager:66]: [DomainRouter] 开始启动… 
 [11:12:16] [Plug] [ERRO] [v4.13.1] [database.sqlalchemy_database_manager:182]: [DomainRouter] 确保 MySQL 数据库存在失败: unpack requires a buffer of 4 bytes 
 [11:12:16] [Plug] [ERRO] [v4.13.1] [database.sqlalchemy_database_manager:93]: [DomainRouter] 启动失败: unpack requires a buffer of 4 bytes 
Traceback (most recent call last):
  File "/AstrBot/data/plugins/astrbot_plugin_self_learning/services/database/sqlalchemy_database_manager.py", line 71, in start
    await self._ensure_mysql_database_exists()
  File "/AstrBot/data/plugins/astrbot_plugin_self_learning/services/database/sqlalchemy_database_manager.py", line 162, in _ensure_mysql_database_exists
    conn = await aiomysql.connect(
           ^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.11/site-packages/aiomysql/connection.py", line 74, in _connect
    await conn._connect()
  File "/usr/local/lib/python3.11/site-packages/aiomysql/connection.py", line 539, in _connect
    await self._get_server_information()
  File "/usr/local/lib/python3.11/site-packages/aiomysql/connection.py", line 1058, in _get_server_information
    self.server_thread_id = struct.unpack('<I', data[i:i + 4])
                            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
struct.error: unpack requires a buffer of 4 bytes
 [11:12:16] [Plug] [WARN] [v4.13.1] [core.plugin_lifecycle:329]: 数据库管理器启动返回 False (尝试 3/3) 
 [11:12:16] [Plug] [ERRO] [v4.13.1] [core.plugin_lifecycle:343]: 数据库管理器启动失败: 所有重试均失败 
 [11:12:16] [Plug] [WARN] [v4.13.1] [core.plugin_lifecycle:346]: 插件将在数据库功能受限的情况下继续运行 
 [11:12:16] [Plug] [INFO] [core.patterns:43]: 服务状态变更: created -> initializing 
 [11:12:16] [Plug] [ERRO] [v4.13.1] [state.affection_manager:518]: 获取活跃群组列表失败: 数据库管理器未启动,engine不存在 
 [11:12:16] [Plug] [INFO] [state.affection_manager:423]: 没有发现活跃群组,跳过情绪初始化 
 [11:12:16] [Plug] [INFO] [state.affection_manager:139]: 好感度管理服务启动成功 
 [11:12:16] [Plug] [INFO] [core.patterns:43]: 服务状态变更: initializing -> running 
 [11:12:16] [Plug] [INFO] [core.patterns:56]: 服务启动成功 
 [11:12:16] [Plug] [INFO] [core.plugin_lifecycle:352]: 好感度管理服务启动成功 
 [11:12:16] [Plug] [INFO] [webui.manager:207]: 成功获取 AstrBot 框架 PersonaManager: <class 'astrbot.core.persona_mgr.PersonaManager'> 
 [11:12:16] [Plug] [INFO] [webui.dependencies:98]:  [WebUI] persona_updater 获取成功: <class 'data.plugins.astrbot_plugin_self_learning.services.persona.persona_updater.PersonaUpdater'> 
 [11:12:16] [Plug] [INFO] [webui.dependencies:138]: [WebUI] 性能监测模块初始化成功 
 [11:12:16] [Plug] [INFO] [webui.dependencies:155]:  [WebUI] PersonaWebManager 初始化成功 
 [11:12:16] [Plug] [INFO] [webui.dependencies:163]:  [WebUI] 服务容器初始化完成 
 [11:12:16] [Plug] [INFO] [webui.dependencies:218]:  [WebUI] 插件服务设置完成 
 [11:12:16] [Plug] [INFO] [webui.manager:140]: Web 服务器插件服务设置完成 
 [11:12:16] [Plug] [INFO] [webui.manager:147]: 准备启动 Web 服务器: http://0.0.0.0:8080 
 [11:12:16] [Plug] [INFO] [webui.app:49]:  [WebUI] Quart 应用创建成功 
 [11:12:16] [Plug] [INFO] [webui.app:67]:  [WebUI] 已注册蓝图: auth 
 [11:12:16] [Plug] [INFO] [webui.app:67]:  [WebUI] 已注册蓝图: config 
 [11:12:16] [Plug] [INFO] [webui.app:67]:  [WebUI] 已注册蓝图: personas 
 [11:12:16] [Plug] [INFO] [webui.app:67]:  [WebUI] 已注册蓝图: learning 
 [11:12:16] [Plug] [INFO] [webui.app:67]:  [WebUI] 已注册蓝图: jargon 
 [11:12:16] [Plug] [INFO] [webui.app:67]:  [WebUI] 已注册蓝图: chat 
 [11:12:16] [Plug] [INFO] [webui.app:67]:  [WebUI] 已注册蓝图: bug_report 
 [11:12:16] [Plug] [INFO] [webui.app:67]:  [WebUI] 已注册蓝图: metrics 
 [11:12:16] [Plug] [INFO] [webui.app:67]:  [WebUI] 已注册蓝图: social 
 [11:12:16] [Plug] [INFO] [webui.app:67]:  [WebUI] 已注册蓝图: persona_reviews 
 [11:12:16] [Plug] [INFO] [webui.app:67]:  [WebUI] 已注册蓝图: intelligent_chat 
 [11:12:16] [Plug] [INFO] [webui.app:67]:  [WebUI] 已注册蓝图: monitoring 
 [11:12:16] [Plug] [INFO] [webui.app:69]:  [WebUI] 共注册 12 个蓝图 
 [11:12:16] [Plug] [INFO] [webui.server:139]: [WebUI] 启动服务器: http://0.0.0.0:8080 
 [11:12:17] [Plug] [INFO] [webui.server:152]: [WebUI] Web服务器启动成功 
 [11:12:17] [Plug] [INFO] [webui.server:153]: [WebUI] 本地访问: http://127.0.0.1:8080 
 [11:12:17] [Plug] [INFO] [webui.manager:152]: Web 服务器启动完成 
 [11:12:17] [Plug] [INFO] [core.plugin_lifecycle:401]: 自学习插件加载完成 """

Mysql日志
"""
2026-03-02 11:12:41+08:00 [Note] [Entrypoint]: Entrypoint script for MySQL Server 8.0.34-1.el8 started.
2026-03-02 11:12:41+08:00 [Note] [Entrypoint]: Switching to dedicated user 'mysql'
2026-03-02 11:12:41+08:00 [Note] [Entrypoint]: Entrypoint script for MySQL Server 8.0.34-1.el8 started.
'/var/lib/mysql/mysql.sock' -> '/var/run/mysqld/mysqld.sock'
2026-03-02T03:12:41.966710Z 0 [Warning] [MY-011068] [Server] The syntax '--skip-host-cache' is deprecated and will be removed in a future release. Please use SET GLOBAL host_cache_size=0 instead.
2026-03-02T03:12:41.967964Z 0 [System] [MY-010116] [Server] /usr/sbin/mysqld (mysqld 8.0.34) starting as process 1
2026-03-02T03:12:41.972642Z 1 [System] [MY-013576] [InnoDB] InnoDB initialization has started.
2026-03-02T03:12:42.186532Z 1 [System] [MY-013577] [InnoDB] InnoDB initialization has ended.
2026-03-02T03:12:42.429814Z 0 [Warning] [MY-010068] [Server] CA certificate ca.pem is self signed.
2026-03-02T03:12:42.429874Z 0 [System] [MY-013602] [Server] Channel mysql_main configured to support TLS. Encrypted connections are now supported for this channel.
2026-03-02T03:12:42.432390Z 0 [Warning] [MY-011810] [Server] Insecure configuration for --pid-file: Location '/var/run/mysqld' in the path is accessible to all OS users. Consider choosing a different directory.
2026-03-02T03:12:42.455386Z 0 [System] [MY-011323] [Server] X Plugin ready for connections. Bind-address: '::' port: 33060, socket: /var/run/mysqld/mysqlx.sock
2026-03-02T03:12:42.455501Z 0 [System] [MY-010931] [Server] /usr/sbin/mysqld: ready for connections. Version: '8.0.34'  socket: '/var/run/mysqld/mysqld.sock'  port: 3306  MySQL Community Server - GPL.
"""

Relevant Configuration

我的Astrbot 和 Mysql 分别是两个docker容器

Additional Context

刚开始玩BOT, 不懂的还很多, 希望大佬能多指点一下, 谢谢

Metadata

Metadata

Assignees

No one assigned

    Labels

    bugSomething isn't workinghelp wantedExtra attention is needed

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions