Незаконное сочетание сопоставления в laravel

Я пытался реализовать смайлики в таблице. Я изменил сортировку столбцов на utf8mb4_unicode_ci, а остальные параметры сортировки столбцов пусты, но когда я пытаюсь запросить это. Я получаю такую ​​ошибку

SQLSTATE[HY000]: General error: 1267 Illegal mix of collations (utf8mb4_unicode_ci,IMPLICIT) and (utf8_unicode_ci,COERCIBLE) for operation '=' (SQL: select count(*) as aggregate from qa_defect_comments where defect_id = 2957 and logged_user_id = 2 and comments = ??)

Можем ли мы установить сопоставление во время запроса данных?

РЕДАКТИРОВАТЬ- ПОКАЗАТЬ СОЗДАТЬ ТАБЛИЦУ qa_defect_comments

CREATE TABLE `qa_defect_comments` (
 `comments_id` int(11) NOT NULL AUTO_INCREMENT,
 `defect_id` int(11) NOT NULL,
 `project_id` int(11) NOT NULL,
 `comments` mediumtext COLLATE utf8mb4_unicode_ci NOT NULL,
 `logged_user_id` int(11) NOT NULL,
 `assign_user_id` int(11) NOT NULL,
 `created_at` datetime NOT NULL,
 `updated_at` datetime NOT NULL,
 `created_time` datetime NOT NULL,
 PRIMARY KEY (`comments_id`)
) ENGINE=InnoDB AUTO_INCREMENT=1793 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci ROW_FORMAT=DYNAMIC

ПОКАЗАТЬ ПЕРЕМЕННЫЕ, КАК char%;

character_set_client - utf8mb4
character_set_connection - utf8mb4
character_set_database - latin1
character_set_filesystem - binary
character_set_results - utf8mb4
character_set_server - latin1
character_set_system - utf8
character_sets_dir - /usr/share/percona-server/charsets/

ПОКАЗАТЬ ПЕРЕМЕННЫЕ, КАК "coll%";

collation_connection - utf8mb4_unicode_ci
collation_database - latin1_swedish_ci
collation_server - latin1_swedish_ci
SHOW CREATE TABLE qa_defect_comments и SHOW VARIABLES LIKE 'char%'; и SHOW VARIABLES LIKE 'coll%';
Rick James 04.12.2018 00:36

Я отредактировал и добавил запрошенные данные - @RickJames

Rehan 04.12.2018 05:40
Освоение архитектуры микросервисов с Laravel: Лучшие практики, преимущества и советы для разработчиков
Освоение архитектуры микросервисов с Laravel: Лучшие практики, преимущества и советы для разработчиков
В последние годы архитектура микросервисов приобрела популярность как способ построения масштабируемых и гибких приложений. Laravel , популярный PHP...
Как построить CRUD-приложение в Laravel
Как построить CRUD-приложение в Laravel
Laravel - это популярный PHP-фреймворк, который позволяет быстро и легко создавать веб-приложения. Одной из наиболее распространенных задач в...
Освоение PHP и управление базами данных: Создание собственной СУБД - часть II
Освоение PHP и управление базами данных: Создание собственной СУБД - часть II
В предыдущем посте мы создали функциональность вставки и чтения для нашей динамической СУБД. В этом посте мы собираемся реализовать функции обновления...
Документирование API с помощью Swagger на Springboot
Документирование API с помощью Swagger на Springboot
В предыдущей статье мы уже узнали, как создать Rest API с помощью Springboot и MySql .
Роли и разрешения пользователей без пакета Laravel 9
Роли и разрешения пользователей без пакета Laravel 9
Этот пост изначально был опубликован на techsolutionstuff.com .
Как установить LAMP Stack - Security 5/5 на виртуальную машину Azure Linux VM
Как установить LAMP Stack - Security 5/5 на виртуальную машину Azure Linux VM
В предыдущей статье мы завершили установку базы данных, для тех, кто не знает.
1
2
6 010
2

Ответы 2

Проверьте config/database.php. Я думаю, вы найдете utf8 в одном или двух местах, где у вас должен быть utf8mb4.

'mysql' => [..., 'charset' => 'utf8mb4', 'collation' => 'utf8mb4_unicode_ci', ...]

Есть ли способ не изменять файлы конфигурации и по-прежнему иметь возможность это сделать?

Rehan 05.12.2018 02:14

Сразу после подключения используйте SET NAMES utf8mb4. Если ему тоже нужна сортировка; см. руководство, чтобы узнать, как это указать.

Rick James 31.08.2021 23:52

Я тоже столкнулся с той же проблемой. Я решил это:

  1. Переход к phpMyadmin
  2. Выберите базу данных, которую использует ваше приложение
  3. Нажмите на Операции
  4. Выберите параметры сортировки: utf8_general_ci
  5. Нажмите на Go

Очистил кеш конфигурации laravel:

php artisan config:cache

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