如何解决易优CMS中 General error_ 1366 Incorrect string value 错误?
解决易优CMS中 General error: 1366 Incorrect string value
错误的方法主要包括以下几个步骤:
-
升级MySQL版本:
- 如果当前使用的MySQL版本低于5.5,建议首先将MySQL版本升级到5.7或更高版本。新版本的MySQL已经全面支持
utf8mb4
编码,能够更好地处理4字节字符。
- 如果当前使用的MySQL版本低于5.5,建议首先将MySQL版本升级到5.7或更高版本。新版本的MySQL已经全面支持
-
修改数据库字符集:
- 登录到MySQL数据库管理工具(如phpMyAdmin、Navicat等)。
- 选择易优CMS使用的数据库,执行以下SQL语句,将数据库的字符集和排序规则更改为
utf8mb4
和utf8mb4_general_ci
:sqlALTER DATABASE 你的数据库名 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci;
-
修改数据表和字段字符集:
- 对于需要存储特殊字符的表和字段,执行以下SQL语句,将其字符集和排序规则更改为
utf8mb4
和utf8mb4_general_ci
。例如,假设需要修改ey_content
表中的content
字段:sqlALTER TABLE ey_content CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci; ALTER TABLE ey_content MODIFY content LONGTEXT CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci;
- 对于需要存储特殊字符的表和字段,执行以下SQL语句,将其字符集和排序规则更改为
-
修改MySQL配置文件:
- 打开MySQL的配置文件
my.cnf
(在宝塔面板中,路径通常是/etc/my.cnf
)。 - 在
[client]
、[mysqld]
和[mysql]
部分添加或修改以下配置:ini[client] default-character-set=utf8mb4 [mysqld] character-set-server = utf8mb4 collation-server = utf8mb4_unicode_ci init_connect='SET NAMES utf8mb4' skip-character-set-client-handshake = true [mysql] default-character-set = utf8mb4
- 打开MySQL的配置文件
-
重启MySQL服务:
- 保存配置文件后,重启MySQL服务以使更改生效。在宝塔面板中,可以通过“软件商店” -> “MySQL” -> “设置” -> “重启”来完成重启操作。
-
验证修改结果:
- 重新尝试插入或更新包含特殊字符的内容,确认不再出现
General error: 1366 Incorrect string value
错误。 - 可以通过以下SQL查询来检查数据库和表的字符集是否已成功更改为
utf8mb4
:sqlSHOW VARIABLES LIKE 'character_set_%'; SHOW VARIABLES LIKE 'collation%'; SHOW FULL COLUMNS FROM ey_content;
- 重新尝试插入或更新包含特殊字符的内容,确认不再出现