2015-12-09 77 views
-1

我在Debian上使用5.5.46服务器。与MySQL错误1064(42000)

我想知道什么是错的语法如下,我发现了以下错误:

ERROR 1064 (42000) at line 5: 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 'desc VARCHAR(10) UNSIGNED NOT NULL, hora VARCHAR(5) UNSIGNED NOT NULL, ' at line 3

drop database loteria; 
create database loteria; 
use loteria; 

create table loteria (
    id SMALLINT(3) UNSIGNED NOT NULL AUTO_INCREMENT, 
    desc VARCHAR(10) UNSIGNED NOT NULL, 
    hora VARCHAR(5) UNSIGNED NOT NULL, 
    primary key(id) 
); 

我无法看到错误,可以请你指导我来标识它。

谢谢你的时间。

+1

desc是一个保留字 – Hogan

回答

2

varchar类型不能是“UNSIGNED”。它们是字母数字类型 - UNSIGNED不适用。另外,desc是保留字。

下面的工作将对列名进行反编。请注意,只有desc需要反选,因为它是保留字。但是,为了安全起见,所有这些都是通常的做法。列名中的空格或连字符可能会触发类似的语法错误。

create table `loteria` (
    `id` SMALLINT(3) UNSIGNED NOT NULL AUTO_INCREMENT, 
    `desc` VARCHAR(10) NOT NULL, 
    `hora` VARCHAR(5) NOT NULL, 
    primary key(`id`) 
); 

有关保留字在MySQL列表,请参阅This Link和它们与一个(R)其名称旁边的人。

+0

这很愚蠢。谢谢。我有5年以上没有对SQL做任何事情。谢谢。 –

0

两个问题:desc是不能用作列名的保留字,并且varchar不能是“无符号”,因为它是字符串类型。