É frustrante quando você atualiza algum produto em seu sistema, e algo que simplesmente funcionava para de repente. Bem, ontem eu passei meia hora levando uma surra do mysql e ubuntu achando que o problema era comigo, sendo que existe um bug nessa combinação fatal.
o mySQL possui um comando chamado LOAD DATA INFILE que é usado para carregar uma base de dados a partir de um arquivo de texto qualquer. Este comando é absurdamente veloz (eu carreguei uma tabela com 1.000.209 registros em 6.09 segundos (isso porque tinha uma porrada de aplicação aberta em meu desktop).
Bem, eu ja havia usado este comando várias vezes no passado e ontem ao dar carga na minha tabela do projeto movie lens usando o comando:
LOAD DATA INFILE ‘/home/vinicius/temp/ratings.dat’ INTO TABLE RATING FIELDS TERMINATED BY ‘::’ LINES TERMINATED BY ‘\n’ (user_id,movie_id,rating,@time) set vote_time = FROM_UNIXTIME(@time);, para minha surpresa a mensagem foi:
ERROR 1085 (HY000): The file ‘/home/vinicius/temp/ratings.dat’ must be in the database directory or be readable by all
Bem, ok, será que vacilei com permissões? Após checar as permissões, 744, bem todos podem ler, vamos tentar novamente… Mesmo erro. Vamos apelar chmod 777 ratings.dat … Mesmo erro. Bem, será que é o diretório? mv ratings.dat /tmp/ratings.dat, agora diretório e arquivo com permissões totais 777. Mesmo erro: PUTA QUE PARIU!!!!
Bem, achei no manual do mySQL que era possível adicionar o prefixo LOCAL no comando e desta maneira ele serializa o arquivo e envia ao servidor. Ufa, agora sim, mas porque o comando que sempre funcionou agora não presta pra nada? A resposta esta aqui!
Bem fica como uma dica registrada, pois com certeza mais alguem pode ter este problema e quem sabe o google não apresenta esta página para ajudar aqueles na hora de desespero.
Inté