困惑于mysql ERROR 1064(42000)

时间:2015-12-09 18:10:06

标签: mysql sql

我在Debian上使用5.5.46服务器。

我想知道以下语法有什么问题,我收到以下错误:

  

第5行的错误1064(42000):您的SQL语法有错误;   检查与您的MySQL服务器版本对应的手册   正确的语法使用附近' desc VARCHAR(10)UNSIGNED NOT NULL,       hora VARCHAR(5)UNSIGNED NOT NULL,'在第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)
);

我无法看到错误,请您指导我识别错误。

感谢您的时间。

2 个答案:

答案 0 :(得分: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)。

答案 1 :(得分:0)

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