Appearance
常见数据库报错汇总与处理方案
在安装或初始化 EBAOZU 系统时,若遇到数据库相关错误,通常由以下几种原因引起:
错误:ONLY_FULL_GROUP_BY 严格模式报错
- 报错信息:
Expression #1 of SELECT list is not in GROUP BY clause and contains nonaggregated column... - 根本原因:MySQL 8.0 默认开启了
ONLY_FULL_GROUP_BY规则。 - 解决步骤:
- 宝塔面板 -> 【软件商店】 -> 【MySQL】 -> 【设置】 -> 【配置修改】。
- 搜索
sql_mode,修改为:inisql_mode = STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION - 保存并重启 MySQL 服务。
错误:Packet too large(数据包过大导致导入中断)
- 报错信息:
Got a packet bigger than 'max_allowed_packet' bytes - 根本原因:导入大型基础数据表或带有长文本的 SQL 时,MySQL 默认的单次数据包大小限制过小。
- 解决步骤:
- 打开 MySQL 配置文件(
my.cnf或宝塔配置修改)。 - 找到
max_allowed_packet,将其调大为64M或128M:inimax_allowed_packet = 128M - 保存并重启 MySQL。
- 打开 MySQL 配置文件(
错误:字符集与排序规则不支持 Emoji 表情或报错
- 报错信息:
Incorrect string value: '\xF0\x9F\x91\x8D' for column... - 根本原因:数据库或表字符集使用了
utf8(仅支持 3 字节),未配置为支持 4 字节的utf8mb4。 - 解决步骤:
- 创建数据库时,字符集务必选择
utf8mb4。 - 排序规则选择
utf8mb4_general_ci或utf8mb4_unicode_ci。
- 创建数据库时,字符集务必选择
错误:数据库连接超时或 Wait timeout
- 解决步骤:
- 在
my.cnf中适当调大wait_timeout和interactive_timeout(例如设为28800)。 - 配置修改后重启 MySQL 并重启 Swoole 守护进程。
- 在