Ich verliere meine Meinung zu diesem Thema seit gestern.Wie setze ich utf8mb4 auf MySQL richtig?
Ich versuche, meine MySQL-Datenbank von utf8 zu utf8mb4 zu konvertieren. Um dies zu tun, folgte ich diese Seiten/Themen: https://mathiasbynens.be/notes/mysql-utf8mb4#utf8-to-utf8mb4, Cannot store emoji in database, Change MySQL default character set to UTF-8 in my.cnf? usw.
Meine Datenbank scheint utf8mb4_unicode_ci collation
wie erwartet zu haben, und alle zu ihren Tischen.
Dennoch, wenn ich SHOW VARIABLES WHERE Variable_name LIKE 'character\_set\_%' OR Variable_name LIKE 'collation%';
gehe ich erhalten:
#With a Root access
Variable_name Value
character_set_client utf8 #expecting utf8mb4
character_set_connection utf8 #expecting utf8mb4
character_set_database utf8mb4 #good
character_set_filesystem binary #good
character_set_results utf8 #expecting utf8mb4
character_set_server utf8mb4 #good
character_set_system utf8 #expecting utf8mb4
collation_connection utf8_general_ci #expecting utf8mb4_unicode_ci
collation_database utf8mb4_unicode_ci #good
collation_server utf8mb4_unicode_ci #good
#With a standard user access
Variable_name Value
character_set_client utf8 #expecting utf8mb4
character_set_connection utf8mb4 #good
character_set_database utf8mb4 #good
character_set_filesystem binary #good
character_set_results utf8 #expecting utf8mb4
character_set_server utf8mb4 #good
character_set_system utf8 #expecting utf8mb4
collation_connection utf8mb4_unicode_ci #good
collation_database utf8mb4_unicode_ci #good
collation_server utf8mb4_unicode_ci #good
ich eine /etc/mysql/conf.d/90-my.cnf
-Datei wie folgt:
[client]
default-character-set = utf8mb4
[mysql]
default-character-set = utf8mb4
[mysqld]
character-set-client-handshake = FALSE
character-set-server = utf8mb4
collation-server = utf8mb4_unicode_ci
init-connect = 'SET collation_connection = utf8mb4_unicode_ci'
init-connect = 'SET NAMES utf8mb4'
Meine MySQL-Version ist 5.5.54, die alle in einem debian 7.
Hat jemand einen Anhaltspunkt, um mir zu helfen?
Thx für Ihre Hilfe, und sorry für mein schlechtes Englisch ...
EDIT
Fun Tatsache: wenn ich Variablen in dem in-line-Befehl überprüfen, ich habe diese:
mysql> show variables like "%character%";
+--------------------------+----------------------------+
| Variable_name | Value |
+--------------------------+----------------------------+
| character_set_client | utf8mb4 |
| character_set_connection | utf8mb4 |
| character_set_database | utf8mb4 |
| character_set_filesystem | binary |
| character_set_results | utf8mb4 |
| character_set_server | utf8mb4 |
| character_set_system | utf8 |
| character_sets_dir | /usr/share/mysql/charsets/ |
+--------------------------+----------------------------+
Während ich noch utf8
haben für character_set_client
und character_set_results
, wenn ich mit phpMyAdmin überprüfen (mit einem nicht-Superuser-Zugriff)
Thx viel für Ihre Anliegen. Ich habe gerade den Thread bearbeitet, um Zeichen/Kollatierungskram mit einem Standardbenutzerzugriff auf die Datenbank hinzuzufügen. Die Ergebnisse sind besser, aber immer noch nicht perfekt. Ich habe einen kurzen Blick auf Ihren verlinkten Beitrag geworfen, Mann, Ihre Erklärungen sind sehr gut. Ich werde es versuchen, sobald ich von der Arbeit komme. Ich werde dir sagen, wenn etwas funktioniert. (Btw habe ich versucht, das 'HEX (txt)' Ding und das Ergebnis ist gut, alles scheint "hex-codiert" wie erwartet.) Wie auch immer, ich halte Sie schnell in Verbindung. Thx wieder – Vae
Hey Rick, hier sind die Nachrichten: Ich setze alles, was du erwähnst, in den "Was du tun sollst" Teil. Der Test der Daten ist gut (keine Doppelcodierung und jedes Zeichen wird korrekt erkannt). Mein Problem ist: Ich habe ein Fragezeichen in der Datenbank statt Emojis (aber sie sind korrekt auf meiner Website angezeigt). Sie haben geschrieben: "Die zu speichernden Bytes sind nicht als utf8/utf8mb4 kodiert. Beheben Sie dies." Wie kann ich das beheben? FYI, ich benutze PHP. Thx wieder für Ihr Interesse. Bis bald. – Vae
"Erklärungen sind sehr gut" - ich hasse es zu verwalten, wie viele Jahre ich diese Erklärungen verfeinert habe. –