MySQL определенные символы вызывают ошибку «недопустимое сочетание параметров сортировки» - PullRequest
2 голосов
/ 06 января 2020

Я прежде не сталкивался с этой проблемой, но

SQLSTATE [HY000]: общая ошибка: 1267 Недопустимое сочетание параметров сортировки (latin1_swedish_ci, IMPLICIT) и (utf8_unicode_ci, COERCIBLE) для операции '= '(SQL:

select `id` from `data` where `thing` = خ@gmail.com limit 1

Я уверен, что خ@gmail.com не является действительным адресом электронной почты, но я не очень уверен, почему функции базы данных Laravel передали это моему сервер. Разве он не должен знать о наборе символов и сопоставлении базы данных, которую он использует? Является ли правильным решением изменить набор символов и сопоставление на UTF-8, чтобы это не вызывало общих ошибок на моем MySQL сервере ?

Есть ли согласие относительно того, каким должен быть правильный набор символов и сопоставление?

1 Ответ

0 голосов
/ 07 января 2020

И соединение, и определение столбца должны быть CHARACTER SET utf8 (или utf8mb4). Из сообщения об ошибке я вижу, что один из них явно latin1.

В конфигурации Laravel:

В файле config / database. php: 'mysql '=> [...,' charset '=>' utf8 ',' collation '=>' utf8_unicode_ci ', ...]

Пожалуйста, укажите SHOW CREATE TABLE для обсуждения таблицы.

Если вы получите гиббери sh, см. Проблема с символами UTF-8; то, что я вижу, не то, что я хранил

Звенящая пивная кружка (?) требует utf8mb4 вместо utf8. (utf8mb4 - это расширенный набор utf8.)

...