sql >> Database teknologi >  >> RDS >> Mysql

Genindført Ukendt indledende tegnsætindeksfejl?

Dette taler om de ændringer, der er sket siden 8.0Et af de punkter, der er blevet nævnt for dig at henvise til, er dette:

Som følge heraf adskiller standardtegnsættet og sorteringen for nye objekter sig fra tidligere, medmindre et eksplicit tegnsæt og sortering er angivet. Dette inkluderer databaser og objekter i dem, såsom tabeller, visninger og lagrede programmer.

En måde at bevare de tidligere standardindstillinger på er at starte serveren med disse linjer i my.cnf fil:

[mysqld]
character_set_server=latin1
collation_server=latin1_swedish_ci

En anden mulighed, da du kører docker, er at angive disse konfigurationsindstillinger som kommandolinjeargumenter til docker run-kommandoen. For eksempel:

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

På klienten, hvis du ønsker at foretage ændringer - forhåbentlig skulle disse være tilstrækkelige:

For at bruge 4-byte UTF-8 tegnsæt med Connector/J skal du konfigurere MySQL-serveren med character_set_server=utf8mb4 , og lad characterEncoding stå ud af Connector/J-forbindelsesstrengen.

Connector/J vil derefter automatisk detektere UTF-8 indstilling

Håber dette hjælper!




  1. Hvordan begrænser man antallet af rækker, der kan gemmes i mysql-tabellen?

  2. Flet to partitioner til én i SQL Server (T-SQL)

  3. PostgreSQL indlejret JSON-forespørgsel

  4. Installation af specifikke pakkeversioner med pip