MySQL-Sortieroperation mit einem LIKE-Problem

Ich habe ein Kollationsproblem. Es betrifft 3 Spalten dieser Tabelle, creation_date, product_id und lastmodified.

Ich habe die Spalten geändert, um utf8mb4 zu sein, aber sie nehmen es nicht. Siehe unten.

CREATE TABLE `users` ( `id` int(32) NOT NULL AUTO_INCREMENT, `name` varchar(255) COLLATE utf8mb4_unicode_ci NOT NULL DEFAULT '', `creation_date` datetime DEFAULT NULL, `product_id` int(32) DEFAULT NULL, `lastmodified` timestamp NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, PRIMARY KEY (`id`) ) ENGINE=MyISAM AUTO_INCREMENT=121 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci 

Die Abfragen:

 select * from users u where u.name like '%philėp%' No errors, 1 row. select * from users u where u.creation_date like '%philėp%' Illegal mix of collations for operation 'like' 

MySQL-Systemvariablen:

 show variables like '%character_set%'; character_set_client utf8 character_set_connection utf8 character_set_database utf8 character_set_filesystem binary character_set_results utf8 character_set_server utf8mb4 character_set_system utf8 

Es funktioniert, wenn ich MySQL manuell zwinge, die Spalte in der statement zu konvertieren.

 select * from users u where CONVERT(u.creation_date USING utf8mb4) like '%philėp%' No errors; 0 rows; 

ist es nicht utf8mb4 Format bereits?

Würde mich über jede Hilfe freuen.

Solutions Collecting From Web of "MySQL-Sortieroperation mit einem LIKE-Problem"

Das ist mein Verständnis.

Ein DATETIME hat keine sorting.

Ähnlich wie ein INT nicht, weil es ein numerischer Wert ist

Wenn Sie jedoch eine DATETIME abfragen (oder insert), verwenden Sie eine characterfolge, die auf diese Weise formatiert wurde. Dies bedeutet, dass eine implizite Konvertierung zwischen der characterfolge in Ihrer Abfrage und dem DATETIME- Wert in der database möglich ist.

Es ist diese implizite Umwandlung, die meiner Meinung nach hier die Probleme verursacht.

Zusätzlich verwenden Sie creation_date mit Unterstrich und lastmodified ohne. Das sollte wirklich sowohl mit Unterstrich als auch ohne beides sein . Es macht keinen großen Unterschied mit der Abfrage, hilft aber bei der Einhaltung Ihrer databasestandards.