Essa semana estava publicando um banco de dados em ambiente de produção ( ambiente meio que completamente diferente do ambiente de desenvolvimento :S … mas tudo bem ) e o restore insistia em retornar uma mensagem de erro ao tentar inserir os registros pois não encontrava a tabela que tinha acabado de criar. Isso estava acontecendo pq em produção o nome da tabela estava em lower case e no script em upper case. Nunca prestei atenção nessa característica do mysql, pra mim era case insensitive … mas pelo visto não é 🙂 – contra fatos, não há argumentos já dizia Bento XVI.
Procurando no pai dos burros, descobri que a solução é bem simples, basta definir a variável lower_case_table_names no my.cnf/my.ini … na seção mysqld.
Os valores possíveis são:
- 0 (Zero) – Os nomes são armazenados na forma original, como informado no comando CREATE e a comparação é case sensitive.
- 1 (Um) – Os nomes são armazenados em lower case e a comparação é case insensitive.
- 2 (Dois) – Os nomes são armazenados na forma original, como informado no comando CREATE e a comparação é case insensitive – Essa forma funciona apenas em sistemas case insensitive.
Em meu caso eu tinha um servidor de desenvolvimento Linux e produção Windows Server (tudo a ver heheheh) e usei em ambos a opção 1. Ficando assim:
[mysqld]
…
lower_case_table_names = 1
Maiores detalhes: http://dev.mysql.com/doc/refman/5.0/en/identifier-case-sensitivity.html
Abraços