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

Como alterar os nomes das tabelas MySQL no servidor Linux para não diferenciar maiúsculas de minúsculas?


A distinção entre maiúsculas e minúsculas do MySQL é tratada por padrão pelo sistema de arquivos, e é por isso que você encontrou essa diferença:

9.2.2. Sensibilidade entre maiúsculas e minúsculas do identificador

No MySQL, os bancos de dados correspondem a diretórios dentro do diretório de dados. Cada tabela em um banco de dados corresponde a pelo menos um arquivo no diretório do banco de dados (e possivelmente mais, dependendo do mecanismo de armazenamento). Conseqüentemente, a distinção entre maiúsculas e minúsculas do sistema operacional subjacente desempenha um papel na distinção entre maiúsculas e minúsculas dos nomes de banco de dados e tabelas. Isso significa que os nomes de banco de dados e tabelas não diferenciam maiúsculas de minúsculas no Windows e diferenciam maiúsculas de minúsculas na maioria das variedades de Unix. Uma exceção notável é o Mac OS X, que é baseado em Unix, mas usa um tipo de sistema de arquivos padrão (HFS+) que não diferencia maiúsculas de minúsculas. No entanto, o Mac OS X também suporta volumes UFS, que diferenciam maiúsculas de minúsculas, assim como em qualquer Unix. Veja Seção 1.8.4, “Extensões MySQL para SQL Padrão”.

Felizmente, a próxima frase pode ajudá-lo:

Os lower_case_table_names A variável de sistema também afeta como o servidor trata a diferenciação entre maiúsculas e minúsculas do identificador, conforme descrito posteriormente nesta seção.

Os lower_case_table_names sinopse:

Se definido como 0, os nomes das tabelas são armazenados conforme especificado e as comparações diferenciam maiúsculas de minúsculas. Se definido como 1, os nomes das tabelas são armazenados em letras minúsculas no disco e as comparações não diferenciam maiúsculas de minúsculas. Se definido como 2, os nomes das tabelas são armazenados conforme fornecido, mas comparados em letras minúsculas. Essa opção também se aplica a nomes de banco de dados e aliases de tabela. Para obter informações adicionais, consulte a Seção 9.2.2, “Sensibilidade de maiúsculas e minúsculas do identificador”.

Você não deve definir esta variável como 0 se estiver executando o MySQL em um sistema que possui nomes de arquivo que não diferenciam maiúsculas de minúsculas (como Windows ou Mac OS X). Se você definir essa variável como 0 em tal sistema e acessar nomes de tabela MyISAM usando letras maiúsculas diferentes, poderá ocorrer corrupção de índice. No Windows, o valor padrão é 1. No Mac OS X, o valor padrão é 2.

Portanto, parece que você deve definir lower_case_table_names para 1 no arquivo de configuração do MySQL.