Ich versuche, meine Datenbank so zu konvertieren, dass sie diesem Handbuchutf8mb4
folgt . Ich habe gesetzt:
[client]
default-character-set=utf8mb4
[mysql]
default-character-set=utf8mb4
[mysqld]
init-connect='SET NAMES utf8mb4'
collation_server=utf8mb4_unicode_ci
character_set_server=utf8mb4
skip-character-set-client-handshake
Aber der Wert character_set_client
und character_set_results
wird nach wie vor nicht zu utf8mb4 ändern.
mysql> SHOW VARIABLES WHERE Variable_name LIKE 'character\_set\_%' OR Variable_name LIKE 'collation%';
+--------------------------+--------------------+
| Variable_name | Value |
+--------------------------+--------------------+
| character_set_client | utf8 |
| character_set_connection | utf8mb4 |
| character_set_database | utf8mb4 |
| character_set_filesystem | binary |
| character_set_results | utf8 |
| character_set_server | utf8mb4 |
| character_set_system | utf8 |
| collation_connection | utf8mb4_unicode_ci |
| collation_database | utf8mb4_unicode_ci |
| collation_server | utf8mb4_unicode_ci |
+--------------------------+--------------------+
Was mache ich falsch? Wie kann ich diese Werte auf utf8mb4 setzen?
\xampp\mysql\bin\my.ini
. Ich konnte nicht laufen,mysqld --help --verbose 2> /dev/null | grep -A1 'Default options'
da es den folgenden Fehler gibt:'grep' is not recognized as an internal or external command, operable program or batch file.
Ich bin neu in diesem Zeug, also mache ich möglicherweise etwas falsch.skip-character-set-client-handshake
in deiner Konfigurationsdatei? Es ist eine Befehlszeilenoption, keine Variable.character_set_client
,character_set_connection
,character_set_results
,collation_connection
gezeigt , wieutf8
. Irgendwelche Ideen, warum das nicht funktioniert?Ich habe diesen Leitfaden auch befolgt, aber das gleiche Problem trat erneut auf. Das eigentliche Problem liegt in dem Befehl, der zum Erstellen der Datenbank als
DEFAULT CHARACTER
Argument verwendet wird. Wenn dieser während der Ausführung nicht übergeben wird, wird ein Standardzeichensatz übergeben, der nicht übergeben wirdutfmb4
.Im Folgenden sind die Schritte aufgeführt, die ich zur Behebung des Problems ausgeführt habe:
Erstellen Sie eine Dummy-Datenbank mit
utf8mb4
Zeichensatz.Kopieren Sie die tatsächliche Struktur und die Daten aus der tatsächlichen Datenbank in diese Dummy-Datenbank
mysqldump -uroot -proot_password your_db_name | mysql -uroot -proot_password your_db_name_dummy
Aktuelle Datenbank löschen
Neue Datenbank erstellen
Legen Sie abschließend die Tabellenstruktur und die Daten wieder in der ursprünglichen Datenbank ab
mysqldump -uroot -proot_password your_db_name_dummy | mysql -uroot -proot_password your_db_name
Wenn Sie das oben genannte Verfahren anwenden möchten, lesen Sie bitte auch die unten genannten Zeilen sorgfältig durch.
Voraussetzungen und mein Status quo:
mysql --version
mysql Ver 14.14 Distrib 5.7.22 für Linux (x86_64) mit EditLine-Wrappercat /etc/my.cnf
Ich benutze Java-Client, das ist
'mysql:mysql-connector-java:5.1.30'
jdbc:mysql://ip.of.database:3306/your_db_name?zeroDateTimeBehavior=convertToNull&noAccessToProcedureBodies=true&autoReconnect=true
quelle