在Laravel项目的 storages/logs/Laravel.log
看到的错误信息片段:
1 | SQLSTATE[HY000]: General error: 1366 Incorrect string value: '\xF0\x9F\x91\x8B\xF0\x9F...' for column 'name' at row 1 |
出错原因:检查数据库此字段的字符集与整理字符集是否与SQL语句传递数据的字符集相同;不相同则会引发MySQL1366错误。
解决方法:
1 | #1.检查数据表所有字段的状态 |
1 | #2.发现collatioin项非utf8,需要进行修改,使用如下的语句 |
1 | #3.检查数据表所有字段的状态 |
1 | mysql> select * from tdb_goods\g |
mysql语句的\g
等同于;
,\G
:将查询到的横向表格纵向输出,方便阅读
未进行修改my.cnf,下面内容可跳过。记录自己的了解和尝试
参考别人的博文,说是 mysql的配置sql-model
不正确导致的,需要将 my.cnf
中的sql-model
中的STRICT_TRANS_TABLES
删除
STRICT_TRANS_TABLES(存储引擎启用严格模式,非法数据值被拒绝)
我的mysql配置文件是在/etc/my.cnf
1 | sudo cp /etc/my.cnf /etc/my.cnf_bak190628 |
将
1 | [mysqld] |
改为
1 | [mysqld] |
删除了STRICT_TRANS_TABLES
,然后重启 mysql