Ошибка оператора обновления в mysql 8.0 из-за неявной сортировки

#mysql #sql #database #mysql-8.0

Вопрос:

Получение этой ошибки Mysql для всех видов операций обновления

 update `servershopcategories` set category_icon_path = 'velocity/category_icon_path/2/D02nx6aqc85HngSy6QC9LdWKtABuDFGb7fNQenuG.png', `servershopcategories`.`updated_at` = '2021-06-22 00:08:05' where `id` = 2;
ERROR 1267 (HY000): Illegal mix of collations (utf8mb4_unicode_ci,IMPLICIT) and (utf8mb4_0900_ai_ci,IMPLICIT) for operation '='
 

Вот как выглядит конфигурация моей таблицы

 mysql> SHOW TABLE STATUS where name like 'servershopcategories' G;
*************************** 1. row ***************************
           Name: servershopcategories
         Engine: InnoDB
        Version: 10
     Row_format: Dynamic
           Rows: 2
 Avg_row_length: 8192
    Data_length: 16384
Max_data_length: 0
   Index_length: 16384
      Data_free: 0
 Auto_increment: 3
    Create_time: 2021-06-22 00:29:05
    Update_time: 2021-06-21 04:01:49
     Check_time: NULL
      Collation: utf8mb4_unicode_ci
       Checksum: NULL
 Create_options: row_format=DYNAMIC
        Comment: 
1 row in set (0.01 sec)
 

и это структура таблицы

 mysql> show full columns from servershopcategories;                                                                                                                                                           
 -------------------- -------------- -------------------- ------ ----- -------------------------- ---------------- --------------------------------- --------- 
| Field              | Type         | Collation          | Null | Key | Default                  | Extra          | Privileges                      | Comment |
 -------------------- -------------- -------------------- ------ ----- -------------------------- ---------------- --------------------------------- --------- 
| id                 | int unsigned | NULL               | NO   | PRI | NULL                     | auto_increment | select,insert,update,references |         |
| position           | int          | NULL               | NO   |     | 0                        |                | select,insert,update,references |         |
| image              | varchar(191) | utf8mb4_unicode_ci | YES  |     | NULL                     |                | select,insert,update,references |         |
| status             | tinyint(1)   | NULL               | NO   |     | 0                        |                | select,insert,update,references |         |
| _lft               | int unsigned | NULL               | NO   | MUL | 0                        |                | select,insert,update,references |         |
| _rgt               | int unsigned | NULL               | NO   |     | 0                        |                | select,insert,update,references |         |
| parent_id          | int unsigned | NULL               | YES  |     | NULL                     |                | select,insert,update,references |         |
| created_at         | timestamp    | NULL               | YES  |     | NULL                     |                | select,insert,update,references |         |
| updated_at         | timestamp    | NULL               | YES  |     | NULL                     |                | select,insert,update,references |         |
| display_mode       | varchar(191) | utf8mb4_unicode_ci | YES  |     | products_and_description |                | select,insert,update,references |         |
| category_icon_path | varchar(500) | utf8mb4_unicode_ci | YES  |     | NULL                     |                | select,insert,update,references |         |
| additional         | json         | NULL               | YES  |     | NULL                     |                | select,insert,update,references |         |
 -------------------- -------------- -------------------- ------ ----- -------------------------- ---------------- --------------------------------- --------- 
 

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

 mysql> update servershopcategories set position = 2 where id = 2;
ERROR 1267 (HY000): Illegal mix of collations (utf8mb4_unicode_ci,IMPLICIT) and (utf8mb4_0900_ai_ci,IMPLICIT) for operation '='
 

Я много пробовал, меняя параметры сортировки здесь и там, но я чувствую, что здесь мне чего-то не хватает. И я искал несколько решений в Интернете, ни одно из них, похоже, не работает.

Комментарии:

1. Я бы поспорил на большую кружку пива, что на этом столе неисправен Спусковой крючок.

2. Действительно. Поэтому я импортировал этот пакет, и он запустил миграцию laravel. Теперь трудно понять, для какой части триггера именно возникла проблема.