Archive for Agosto, 2009
MySQL – Comparação de nomes de tabelas
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
Add comment Agosto 20, 2009
CodeIgniter: Remover index.php da URL
Estou iniciando com o CodeIgniter e me deparei com um pequeno problema que aparentemente não chegava nem a ser um problema – remover o index.php da URL. Aparentemente era só criar uma regra no htaccess e a mágica estaria feita … não foi bem assim que aconteceu
Resolvi da seguinte forma:
1. Habilitar o ModRewrite no Apache
Abra o httpd.conf e descomente a linha LoadModule rewrite_module modules/mod_rewrite.so e reinicie o apache.
2. htaccess
Crie um .htaccess na raiz do seu projeto. O arquivo deve estar no mesmo nível da pasta system.
RewriteEngine on RewriteCond $1 !^(index\.php|system|images) RewriteRule ^(.*)$ /index.php/$1
Muita atenção com as barras (/). A maioria das dicas e tutoriais que você vai encontrar por ai leva em conta que seu projeto está no document root e não em um alias (diretório virtual). Se você estiver usando um diretório virtual use o RewriteBase para indicar qual a url base de seu projeto e em RewriteRule remova a barra da frente de index.php para indicar que o arquivo não está na raiz do servidor (document root) e sim no diretório virtual.
RewriteEngine on RewriteBase /meu_projeto/ RewriteCond $1 !^(index\.php|system|images) RewriteRule ^(.*)$ index.php/$1
3. config.php
Aqui foi onde eu apanhei feito mala velha. Depois de criar a regra no htacess, o modrewrite não funcionava .. não sei bem ainda o por quê, mas encontrei em um fórum que era necessário alterar uma linha do config.php na pasta application.
Altere a linha $config['index_page'] = “index.php” para $config['index_page'] = “”.
Pronto, problema resolvido.
Abraços
13 comments Agosto 12, 2009