sql >> Database >  >> RDS >> Mysql

Opnieuw geïntroduceerd Onbekende initiële karakterset indexfout?

Dit vertelt over de veranderingen die sinds 8.0 zijn gebeurd. Een van de punten die zijn genoemd om naar te verwijzen, is dit:

Als gevolg hiervan verschillen de standaardtekenset en sortering voor nieuwe objecten van voorheen, tenzij een expliciete tekenset en sortering zijn opgegeven. Dit omvat databases en objecten daarin, zoals tabellen, weergaven en opgeslagen programma's.

Een manier om de vorige standaardinstellingen te behouden, is door de server te starten met deze regels in my.cnf bestand:

[mysqld]
character_set_server=latin1
collation_server=latin1_swedish_ci

Een andere optie, aangezien u docker gebruikt, is om deze configuratie-opties op te geven als opdrachtregelargumenten voor de opdracht docker run. Bijvoorbeeld:

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

Op de client, als u wijzigingen wilt aanbrengen - hopelijk zouden deze moeten volstaan:

Om 4-byte UTF-8-tekensets met Connector/J te gebruiken, configureert u de MySQL-server met character_set_server=utf8mb4 , en laat characterEncoding uit de Connector/J-verbindingsreeks.

Connector/J zal dan automatisch de UTF-8 . detecteren instelling

Ik hoop dat dit helpt!




  1. Controleren of mysql-gebruiker bestaat

  2. Hoe opzettelijk een MySQL-rij vergrendelen zodat zelfs SELECT een fout retourneert?

  3. MySQL-substring tussen twee strings

  4. SQL Server Failover Cluster Installatie -3