易优CMS 中出现 SQLSTATE[HY000]: General error: 1366 Incorrect string value 错误的原因是什么?如何解决?
在使用易优CMS时,如果遇到 SQLSTATE[HY000]: General error: 1366 Incorrect string value 错误,通常是因为数据库字段不支持某些特殊字符或表情符号。这些字符在UTF-8编码中占用4个字节,而易优CMS默认的数据库编码是UTF-8,只能支持最多3个字节的字符。因此,需要将数据库编码从UTF-8更改为UTF-8mb4,以支持完整的Unicode字符集,包括特殊表情符号。
以下是详细的解决步骤和说明:
-
识别问题原因:
- 错误信息
SQLSTATE[HY000]: General error: 1366 Incorrect string value通常出现在插入或更新包含特殊字符(如Emoji表情)的内容时。 - 例如,当从微信公众号复制带有表情的文章内容到易优CMS时,可能会触发此错误。
- 错误信息
-
修改数据库配置文件:
- 打开易优CMS的数据库配置文件
application/database.php。 - 找到数据库连接参数部分,通常类似于以下代码:
php
return [ // 其他配置项... 'params' => array(), // 其他配置项... ]; - 将
'params'数组修改为:php'params' => [ PDO::MYSQL_ATTR_INIT_COMMAND => "SET NAMES utf8mb4", ], - 这个修改确保数据库连接使用UTF-8mb4编码。
- 打开易优CMS的数据库配置文件
-
修改数据库和表的字符集:
- 使用数据库管理工具(如phpMyAdmin、Navicat等)登录到您的MySQL数据库。
- 选择易优CMS使用的数据库,然后执行以下SQL语句,将数据库的字符集和排序规则更改为
utf8mb4和utf8mb4_general_ci:sqlALTER DATABASE 你的数据库名 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci; - 接下来,将所有相关的表和字段也更改为
utf8mb4编码。例如,对于ey_content表中的content字段,执行以下SQL语句:sqlALTER TABLE ey_content CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci; ALTER TABLE ey_content MODIFY content TEXT CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci;
-
批量修改所有表和字段:
- 如果数据库中有大量表和字段需要修改,可以使用以下SQL脚本批量更改:
sql
-- 修改数据库字符集 ALTER DATABASE 你的数据库名 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci; -- 修改所有表的字符集 USE 你的数据库名; SELECT CONCAT('ALTER TABLE ', table_name, ' CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci;') FROM information_schema.tables WHERE table_schema = '你的数据库名'; -- 修改所有字段的字符集 SELECT CONCAT('ALTER TABLE ', table_name, ' MODIFY ', column_name, ' ', column_type, ' CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci;', ';') FROM information_schema.columns WHERE table_schema = '你的数据库名' AND data_type IN ('char', 'varchar', 'text', 'tinytext', 'mediumtext', 'longtext'); - 将上述查询结果生成的SQL语句执行,以批量修改所有表和字段的字符集。
- 如果数据库中有大量表和字段需要修改,可以使用以下SQL脚本批量更改:
-
使用工具或插件:
- 如果不熟悉手动修改SQL语句,可以使用易优CMS提供的工具或插件来完成这些操作。
- 下载包含SQL脚本的压缩包(如
content.zip),解压后将SQL文件导入到易优CMS的【易优系统助手】插件中执行。
-
验证修改结果:
- 完成上述修改后,重新尝试插入或更新包含特殊字符的内容。
- 确认不再出现
SQLSTATE[HY000]: General error: 1366 Incorrect string value错误。

扫码添加技术【解决问题】
专注企业网站建设、网站安全16年。
承接:企业网站建设、网站修改、网站改版、BUG修复、问题处理、二次开发、PSD转HTML、网站被黑、网站漏洞修复等。
专业解决各种疑难杂症,您有任何网站问题都可联系我们技术人员。
本文来自博客园,作者:黄文Rex,转载请注明原文链接:https://www.cnblogs.com/hwrex/p/18580747

浙公网安备 33010602011771号