24/02/2014

Hoje foi dia para andar à vol
tas com um erro de sintaxe no MySQL, ou melhor, um berbicacho do MySQL. Precisei de exportar uma BD para ser importada noutro servidor, com versão de MySQL mais atual. Ao importar tive o seguinte erro:
"ERROR 1064 (42000) at line 41219: 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 'release tinyint(2) unsigned NOT NULL default '0',"

Depois de andar as cabeçadas lá descobri que o problema estava na palavra release. Há pois! Experimentem lá criar uma coluna com este nome:

create database teste;
use teste;
CREATE TABLE tt (release int);

Se fizerem isto, obtêm o tal erro de sintaxe. Resolvi-o da seguinte forma:

create database teste;
use teste;
CREATE TABLE tt (`release` int);

Atenção, não são pelicas, são acentos invertidos (backticks).A explicação de tal acontecer, não fui à procura dela, pois o tempo não é muito, mas provavelmente esta palavra deve ser reservada do MySQL, logo ao utilizada sem os acentos invertidos dá bronca!





2 comentários:

Filipe disse...

Nice tip. Btw:
MySQL Reserved Words: http://dev.mysql.com/doc/refman/5.6/en/reserved-words.html

Paulo Gomes disse...


Obg Filipe... é isso mesmo :)