Mysql
 sql >> Datenbank >  >> RDS >> Mysql

Wieder eingeführt Unbekannter Anfangszeichensatz-Indexfehler?

Dies spricht über die Änderungen, die seit 8.0 stattgefunden haben. Einer der Punkte, auf die Sie sich beziehen können, ist dieser:

Daher unterscheiden sich der Standardzeichensatz und die Sortierung für neue Objekte von der vorherigen, es sei denn, es wird ein expliziter Zeichensatz und eine Sortierung angegeben. Dazu gehören Datenbanken und darin enthaltene Objekte wie Tabellen, Ansichten und gespeicherte Programme.

Eine Möglichkeit, die vorherigen Standardeinstellungen beizubehalten, besteht darin, den Server mit diesen Zeilen in my.cnf zu starten Datei:

[mysqld]
character_set_server=latin1
collation_server=latin1_swedish_ci

Da Sie Docker ausführen, besteht eine weitere Option darin, diese Konfigurationsoptionen als Befehlszeilenargumente für den Befehl „docker run“ anzugeben. Zum Beispiel:

docker run -d \
--network my-net \
-h mysqldb \
--name mysqldb \
-p 3306:3306 \
-e MYSQL_RANDOM_ROOT_PASSWORD=yes \
-e MYSQL_DATABASE=mydb \
-e MYSQL_USER=admin \
-e "MYSQL_PASSWORD=admin" \
mysql:8 --character-set-server=latin1 --collation-server=latin1_swedish_ci

Wenn Sie auf dem Client Änderungen vornehmen möchten, sollten diese hoffentlich ausreichen:

Um 4-Byte-UTF-8-Zeichensätze mit Connector/J zu verwenden, konfigurieren Sie den MySQL-Server mit character_set_server=utf8mb4 , und verlassen Sie characterEncoding aus der Connector/J-Verbindungszeichenfolge.

Connector/J erkennt dann automatisch UTF-8 Einstellung

Hoffe, das hilft!