Skip to content

Problema ao usar base externa mysql #129

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Open
tmg0mes opened this issue Mar 18, 2025 · 8 comments
Open

Problema ao usar base externa mysql #129

tmg0mes opened this issue Mar 18, 2025 · 8 comments

Comments

@tmg0mes
Copy link

tmg0mes commented Mar 18, 2025

Olá! Estou configurando um ambiente de testes com o SEI 5, não encontrando nenhum problema ao usar o container com a base mysql. Porém ao usar uma base mysql externa, surgem alguns problemas:

acentuação errada:
Image

erros de conversão de collation (independente se realizada essa conversão na base ou não), também erros de conexão ao BD em algumas situações:

Image

Image

Image

Versão do mysql que estamos usando: mysql 8.0.39

No docker-compose, alterei as variáveis de banco para refletirem as do banco externo, e deixei de subir o container local do BD. Também retirei a dependência dos outros serviços com relação do container do BD. Estou deixando passar algo?

Grato desde já!

@marlinhares
Copy link
Contributor

Olá @tmg0mes parece que o seu banco externo não está corretamente configurado para o SEI.
Verifique nas receitas de construção do banco aqui no projeto como construímos o nosso conteiner:

https://github.com/pengovbr/sei-docker/tree/main/containers/databases/mysql8-sei50

Verifique principalmente o my.cnf
Atenção essa é uma receita para banco em dev. Para valores de produção chame o seu DBA.

Caso o banco esteja corretamente configurado o sei-docker vai conectar lá sem nenhum problema.

@marlinhares
Copy link
Contributor

@PauloNehme caso tenha alguma idéia pra ajudar o opener ...

@PauloNehme
Copy link
Contributor

Verificar se o banco externo está com o charset UTF8. O padrão do SEI é o Latin1

@tmg0mes
Copy link
Author

tmg0mes commented Mar 25, 2025

Certo, vamos verificar. Obrigado pelo retorno!

@tmg0mes
Copy link
Author

tmg0mes commented Mar 27, 2025

Olá! Verificamos, e ambos os bancos (o do container e o externo) estão em Latin 1.

Container aqui do projeto, que funciona normalmente:
Image

Externo:
Image

Os erros de conexão foram corrigidos, no entanto os erros de acentuação persistem para caracteres oriundos do banco. Notei que, ao tentar cadastrar um usuário chamado João por exemplo, é retornado o erro Conversion from collation utf8mb4_0900_ai_ci into latin1_swedish_ci impossible for parameter:
Image

Achei que pudessem ser esses caras aqui, mas em ambos os BD está igual também:
Image

Ao visualizar as informações no BD externo, tudo correto:
Image

Mais alguma idéia? Grato!!!

@marlinhares
Copy link
Contributor

@tmg0mes esse utf8m4 esta me soando estranho. N me recordo dessa string.
Vc esta usando o conteiner do mariadb ou do mysql?
Da um docker ps la no ambiente onde ta funcionando e pega a imagem de banco q ta rodando la e posta aqui, please

@tmg0mes
Copy link
Author

tmg0mes commented Mar 28, 2025

Boa tarde!

@marlinhares O problema todo é esse Conversion from collation utf8mb4_0900_ai_ci into latin1_swedish_ci impossible for parameter - ele não consegue fazer essa conversão e resulta em erro. Em tempo, abaixo print do docker -ps dos containers daqui do projeto que funcionam sem problemas:
Image

Após muito quebrar a cabeça, notei que se eu passo um parâmetro na conexão do MySqli, forçando para latin1, funciona corretamente no BD externo também:
Image

Não sei se é a solução ideal, mas parece ter resolvido o problema. Não fim, não compreendo a razão para a diferença de comportamento entre o BD do container e do que usamos para outras aplicações, uma vez que a collation de ambos é a mesma. Mas o tal problema de conversão só ocorre caso seja setado o BD externo. Será algo a ver com a conexão mesmo?

@marlinhares
Copy link
Contributor

@tmg0mes não faço idéia. Vc consegue restaurar um dump do seu banco em um conteiner externo ao SEI e testar? A princípio eu acho que isso dai está ou no seu banco mysql ou na estrutura da base de dados usada.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

3 participants