Инструкции вставки работают при вставке смайликов, но выдают ошибку при использовании красноречия

Выполнение запроса,

INSERT INTO table (ref_id, user_id, role_id, text) VALUES (233, 3, 40, 'Hdhdhdh????hzhzhzzhjzj 我爱你 ❌')

отлично работает в Sequel Pro, но при использовании eloquent выдает ошибку,

"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, 'Hdhdhdh????hzhzhzzhjzj 我爱你 ❌')"

Может в драйвере неправильный набор символов?

user3783243 24.05.2019 17:33
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Symfony Station Communiqué - 7 июля 2023 г
Symfony Station Communiqué - 7 июля 2023 г
Это коммюнике первоначально появилось на Symfony Station .
Оживление вашего приложения Laravel: Понимание режима обслуживания
Оживление вашего приложения Laravel: Понимание режима обслуживания
Здравствуйте, разработчики! В сегодняшней статье мы рассмотрим важный аспект управления приложениями, который часто упускается из виду в суете...
Установка и настройка Nginx и PHP на Ubuntu-сервере
Установка и настройка Nginx и PHP на Ubuntu-сервере
В этот раз я сделаю руководство по установке и настройке nginx и php на Ubuntu OS.
Коллекции в Laravel более простым способом
Коллекции в Laravel более простым способом
Привет, читатели, сегодня мы узнаем о коллекциях. В Laravel коллекции - это способ манипулировать массивами и играть с массивами данных. Благодаря...
Как установить PHP на Mac
Как установить PHP на Mac
PHP - это популярный язык программирования, который используется для разработки веб-приложений. Если вы используете Mac и хотите разрабатывать...
6
1
430
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Причина проблемы:

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

Другие вопросы по теме