发布于 5年前

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

©2020 edoou.com   京ICP备16001874号-3