Laravel 下的 MySQL 数据库开启 Emoji 支持
Laravel 5.3 及以下版本,Emoji 保存到数据库时会报错:
SQLSTATE[HY000]: General error: 1366 Incorrect string value
修改 config/database.php 为 utf8mb4
支持即可:
'mysql' => [
'driver' => 'mysql',
...
'charset' => 'utf8mb4',
'collation' => 'utf8mb4_unicode_ci',
...
如果你的数据库里已经有数据,请使用以下 SQL 来修正:
# 修正数据库
ALTER DATABASE database_name CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci;
# 修正数据表连带表内的所有字段
ALTER TABLE table_name CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
另外,Laravel 5.4 已开始默认支持
utf8mb4
。