Причина проблемы:
Laravel по умолчанию использует utf8
в качестве набора символов для MySQL.В MySQL длина символа UTF8 составляет до 3 байтов (utf8
- псевдоним для utf8mb3
).В то время как символы Emoji имеют длину до 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 migrate: reset