【发布时间】:2024-04-29 23:10:03
【问题描述】:
在 PHP 应用程序中,我试图将电子邮件的内容保存在数据库中(表是 utf8mb4 和排序规则 utf8mb4_general_ci)。在我的开发环境中进行测试时,它运行良好,但在生产中我不断收到类似这样的错误:
General error: 1366 Incorrect string value: '\xC7ALHO-...' for column 'content_html' at row 1
我检查了一下,我意识到我在 dev 上安装了 MySQL 5.5,在 prod 上安装了 5.7,我在我的 dev 上升级了 mysql,现在我在 dev 上也遇到了错误。 问题是我不明白为什么我会收到这个错误,内容是一个非常标准的电子邮件,只有一个标题标志。 知道为什么这在 5.7 而不是 5.5 上失败了,是否有任何解决方法?
更新:这里是表格的 SHOW FULL COLUMNS
ysql> SHOW FULL COLUMNS FROM received_email;
+-----------------+--------------+--------------------+------+-----+---------+----------------+---------------------------------+---------+
| Field | Type | Collation | Null | Key | Default | Extra | Privileges | Comment |
+-----------------+--------------+--------------------+------+-----+---------+----------------+---------------------------------+---------+
| id | int(11) | NULL | NO | PRI | NULL | auto_increment | select,insert,update,references | |
| skill_id | int(11) | NULL | YES | MUL | NULL | | select,insert,update,references | |
| agent_id | int(11) | NULL | YES | MUL | NULL | | select,insert,update,references | |
| message_id | longtext | utf8mb4_unicode_ci | NO | | NULL | | select,insert,update,references | |
| received_date | datetime | NULL | NO | | NULL | | select,insert,update,references | |
| downloaded_date | datetime | NULL | NO | | NULL | | select,insert,update,references | |
| from_name | varchar(255) | utf8mb4_unicode_ci | YES | | NULL | | select,insert,update,references | |
| from_email | varchar(255) | utf8mb4_unicode_ci | NO | | NULL | | select,insert,update,references | |
| subject | longtext | utf8mb4_unicode_ci | NO | | NULL | | select,insert,update,references | |
| content_html | longtext | utf8mb4_unicode_ci | YES | | NULL | | select,insert,update,references | |
| content_plain | longtext | utf8mb4_unicode_ci | YES | | NULL | | select,insert,update,references | |
| recipient | varchar(255) | utf8mb4_unicode_ci | NO | | NULL | | select,insert,update,references | |
| created_at | datetime | NULL | YES | | NULL | | select,insert,update,references | |
| updated_at | datetime | NULL | YES | | NULL | | select,insert,update,references | |
| case_detail_id | int(11) | NULL | YES | MUL | NULL | | select,insert,update,references | |
+-----------------+--------------+--------------------+------+-----+---------+----------------+---------------------------------+---------+
提前致谢
【问题讨论】:
-
该特定列的字符集是什么?运行这个
SHOW FULL COLUMNS FROM table_name;并通过输出。 -
@Ali 添加到描述中,全部为 utf8mb4
标签: php mysql utf-8 character-encoding