Recentemente migrando um servidor MySQL da Versão 5 para a versão 8, nos deparamos com um problema de tabelas com nomes não encontrados nas pesquisas, porem como o servidor antigo era Windows e esse por sua vez não tem distinção de letras maiúsculas e minúsculas, tivemos que alterar um parâmetro no my.cfg para se adequar e não termos incompatibilidades nas migrações.
Seguem os passos feitos para a correção do problema:
1 – Parar o serviço do MySQL no servidor:
$ systemctl stop mysqld
2 – Remover o diretório de dados existente para a criação de um novo
$ rm -Rf /database/data; mkdir /database/data; chown mysql:mysql /database/data
3 – Alterar o arquivo/etc/my.cnf.d/mysql-server.cnf acrescentando a linha abaixo:
[mysqld] lower_case_table_names=1
4 – Iniciar o MySQL com o comando abaixo, a fim de criar toda da estrutura de utilização do banco.
$ mysqld --defaults-file=/etc/my.cnf.d/mysql-server.cnf --initialize --user=mysql --console
5 – Verificamos se o banco encontra-se no ar e com o parâmetro setado corretamente
$ mysql -u root -p Enter password: Welcome to the MySQL monitor. Commands end with ; or \g. Your MySQL connection id is 10 Server version: 8.0.32 Copyright (c) 2000, 2023, Oracle and/or its affiliates. Oracle is a registered trademark of Oracle Corporation and/or its affiliates. Other names may be trademarks of their respective owners. Type 'help;' or '\h' for help. Type '\c' to clear the current input statement. mysql> SHOW VARIABLES where Variable_name like 'lower%'; +------------------------+-------+ | Variable_name | Value | +------------------------+-------+ | lower_case_file_system | OFF | | lower_case_table_names | 1 | +------------------------+-------+ 2 rows in set (0.01 sec)