Buckminster
(usa Debian)
Enviado em 23/09/2021 - 17:36h
O Mysql é o banco de dados.
O MySQL Workbench é uma ferramenta visual para banco de dados.
O DBeaver também é uma ferramenta visual para banco de dados.
Mas vamos analisar as saídas:
character_set_client | utf8
e
character_set_client | utf8mb4
"Note
The utf8mb3 character set is deprecated and you should expect it to be removed in a future MySQL release. Please use utf8mb4 instead. Although utf8 is currently an alias for utf8mb3, at some point utf8 is expected to become a reference to utf8mb4. To avoid ambiguity about the meaning of utf8, consider specifying utf8mb4 explicitly for character set references instead of utf8."
"Observação
O conjunto de caracteres (charset) utf8mb3 está obsoleto e você deve esperar que ele seja removido em uma versão futura do MySQL. Use utf8mb4 em vez de utf8mb3 . Embora utf8 seja atualmente um alias para utf8mb3, em algum momento o alias utf8 deverá se tornar uma referência para utf8mb4.
Para evitar ambigüidade sobre o significado de utf8, considere especificar utf8mb4 explicitamente para referências de conjunto de caracteres (charset) em vez de utf8."
https://dev.mysql.com/doc/refman/8.0/en/charset-unicode-utf8.html
O Mysql ainda não implementou o padrão UTF8 completamente, ele implementou apenas símbolos de até 3 bytes e esqueceu o resto. Ainda assim, o utf8 e o utf8mb4 tem uma grande compatibilidade, a maioria absoluta dos caracteres vão ser iguais nos dois sistemas (no Mysql e na linguagem da aplicação).
Para consertar este erro do utf8mb3, a partir da versão 5.5, o MySQL implementou o padrão completo indo de 1 até 4 bytes e como já havia usado o nome utf8 chamou sua nova implementação de utf8mb4. Resumindo: o utf8 do MySQL não é UTF-8 padrão e o utf8mb4 segue totalmente o padrão UTF-8, mas não é igual... que confusão fizeram né?
Nas suas aplicações (em PHP, Java, etc) que usarem Mysql sempre defina no código fonte o UTF8 para evitar problemas de acentos, caracteres estranhos, etc. Sempre faça com que o Mysql "pegue" o charset da linguagem.
No Mysql:
default-character-set = utf8mb4
Na linguagem:
utf8
Lembre-se: nunca é demais definir o charset na linguagem.
Essas diferenças que deram nas saídas é porque o Workbench e o Dbeaver "lêem" o charset como utf8mb4 do Mysql e o Mysql "lê" e apresenta o próprio charset utf8mb3 ou utf8mb4 com o alias utf8 (lembrando que mesmo o utf8mb4 do Mysql não é o mesmo que o padrão UTF-8, apesar de que são compatíveis)... e a confusão continua.
O utf8 ali na tua saída do Mysql, vá saber se é utf8mb3 ou utf8mb4, provavelmente é utfbmb4 por causa da saída do Workbench e do Dbeaver.
Acredito que para ter a mesma saída tu deverá definir o mesmo charset para todos, Mysql, Workbench e DBeaver e sugiro colocar como utf8mb4 para evitar a confusão do alias (apelido) utf8 do Mysql.
Qual é a versão do teu Mysql?
Para complementar, aqui tem uma boa explicação sobre esse tal Collation do Mysql e sua diferença do charset e sobre o collation em geral (o Mysql sempre fazendo mysquelices):
https://www.geeksforgeeks.org/what-is-collation-and-character-set-in-mysql/
https://www.dirceuresende.com/blog/sql-server-como-padronizar-o-collation-de-todas-as-colunas-do-dat...
________________________________________________
Always listen the Buck!
Sanou tua dúvida, resolveu teu problema?
Então marque como Resolvido e escolha a Melhor Resposta.