quarta-feira, 25 de junho de 2014

Tabela de erro MySQL 1064

Original post : http://anothermysqldba.blogspot.com/2014/06/mysql-table-error-1064.html

Então me deparei com uma situação estranha hoje. 

Eu tenho um sistema que cria tabelas de memória usando o PHP $ _COOKIE ['PHPSESSID'] valor. 

Uma vez que um trabalho é feito, em seguida, cai a mesa. 

Duas tabelas de amostra estão abaixo do meu exemplo. 


@@VERSION: 5.6.19-log 
CREATE TABLE `f7a7a8d3a7ba75b5eb1712864c9b27eb` ( 
-> `id` int(11) NOT NULL AUTO_INCREMENT, 
-> PRIMARY KEY (`id`) 
-> ) ENGINE=MEMORY; 

CREATE TABLE `8865e52c7e1bea515e7156f240729275` ( 
-> `id` int(11) NOT NULL AUTO_INCREMENT, 
-> PRIMARY KEY (`id`) 
-> ) ENGINE=MEMORY; 


Agora algum processamento simples ocorre nas mesas reais que eu usei, então como eu disse eu deixou-os cair. 


DROP TABLE IF EXISTS f7a7a8d3a7ba75b5eb1712864c9b27eb; 
Query OK, 0 rows affected (0.09 sec) 


Bastante simples, até que eu corri em toda esta .. 


desc 8865e52c7e1bea515e7156f240729275; 
ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '8865e52c7e1bea515e7156f240729275' at line 1 

DROP TABLE IF EXISTS 8865e52c7e1bea515e7156f240729275; 
ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '8865e52c7e1bea515e7156f240729275' at line 1 


Agora, a correção é realmente muito simples. Mas a questão é por que um trabalho e um fracasso? 

Para corrigir isso apenas crase o nome da tabela. O que eu deveria ter feito desde o início de qualquer maneira. Isso é apenas uma boa prática para entrar. 


DROP TABLE IF EXISTS `8865e52c7e1bea515e7156f240729275`; 
Query OK, 0 rows affected (0.02 sec) 


Agora eu primeiro pensei que talvez a questão era o nome alfa-numérico, mas podemos ver que uma versão funciona. A diferença, porém, é o início do nome da tabela. Um deles é um número inteiro e um é um personagem Alpha. Então mais uma vez .. siga as melhores práticas e os nomes de tabela citação para evitar tais erros estúpidos. 


Depois de todo o código de erro é um erro de análise .. 


perror 1064 
MySQL error code 1064 (ER_PARSE_ERROR): %s near '%-.80s' at line %d