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.
Agora algum processamento simples ocorre nas mesas reais que eu usei, então como eu disse eu deixou-os cair.
Bastante simples, até que eu corri em toda esta ..
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.
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 ..
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