Mysql
 sql >> Base de Dados >  >> RDS >> Mysql

Erro de índice do conjunto de caracteres inicial desconhecido reintroduzido?


Isto fala sobre as mudanças que aconteceram desde 8.0Um dos pontos que foi listado para você se referir é este:

Como resultado, o conjunto de caracteres padrão e a ordenação para novos objetos diferem dos anteriores, a menos que um conjunto de caracteres e uma ordenação explícitos sejam especificados. Isso inclui bancos de dados e objetos dentro deles, como tabelas, exibições e programas armazenados.

Uma maneira de preservar os padrões anteriores é iniciar o servidor com essas linhas em my.cnf Arquivo:
[mysqld]
character_set_server=latin1
collation_server=latin1_swedish_ci

Outra opção, já que você está executando o docker, é especificar essas opções de configuração como argumentos de linha de comando para o comando docker run. Por exemplo:
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

No cliente, se você quiser fazer alterações - espero que sejam suficientes:

Para usar conjuntos de caracteres UTF-8 de 4 bytes com Connector/J, configure o servidor MySQL com character_set_server=utf8mb4 , e deixe characterEncoding fora da cadeia de conexão Connector/J.

O Connector/J detectará automaticamente o UTF-8 contexto

Espero que isto ajude!