运行查询,
INSERT INTO table (ref_id, user_id, role_id, text)
VALUES (233, 3, 40, 'Hdhdhdhhzhzhzzhjzj 我爱你 ❌')
在Sequel Pro中工作正常,但是当雄辩地使用时,会引发错误,
"SQLSTATE[HY000]: General error: 1366 Incorrect string value: '\xF0\x9F\x98\x9C\xF0\x9F...' for column 'text' at row 1 (SQL: INSERT INTO table (ref_id, user_id, role_id, text) VALUES (233, 3, 40, 'Hdhdhdhhzhzhzzhjzj 我爱你 ❌')"
答案 0 :(得分:3)
默认情况下,Laravel使用utf8
作为MySQL的字符集。在MySQL中,UTF8字符最多3个字节长(utf8
是utf8mb3
的别名)。而表情符号字符最长为4个字节。
因此,我们需要使用utf8mb4
作为字符集。
1。打开您的config/database.php
2。找到MySQL部分:
'mysql' => [
'driver' => 'mysql',
[...]
'charset' => 'utf8',
'collation' => 'utf8_unicode_ci',
[....]
3。将字符集和排序规则分别更改为utf8mb4
和utf8mb4_unicode_ci
:
'mysql' => [
'driver' => 'mysql',
[...]
'charset' => 'utf8mb4',
'collation' => 'utf8mb4_unicode_ci',
[....]
4。保存并重置数据库:
请注意,如果您重置数据库,则所有数据都将被清除!
php artisan migration:reset