您的位置:首页 > 数据库

ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that corresponds to your

2013-01-15 16:26 411 查看
今天,写了一个创建数据库表的SQL语句如下:

CREATE TABLE Release(

ReleaseID INTEGER NOT NULL PRIMARY KEY AUTO_INCREMENT,

Name VARCHAR(128) NOT NULL,

Version VARCHAR(128) NOT NULL,

SubVersion VARCHAR(128) NOT NULL,

ActiveStatus int(1) default 1 NOT NULL,

ProductID INTEGER NOT NULL REFERENCES product(ProductID),

CreateTime TIMESTAMP NOT NULL,

UpdateTime TIMESTAMP NOT NULL

);

总是报错如下:

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 'relea

se(

ReleaseID INTEGER NOT NULL PRIMARY KEY AUTO_INCREMENT,

Name VARCHAR(128' at line 1

查了MySQL的手册,最后发现是一个简单的原因造成的,这个简单的原因就是release这个单词是一个保留字,不能出现在sql语句中。

于是修改如下:

CREATE TABLE TestRelease(

ReleaseID INTEGER NOT NULL PRIMARY KEY AUTO_INCREMENT,

Name VARCHAR(128) NOT NULL,

Version VARCHAR(128) NOT NULL,

SubVersion VARCHAR(128) NOT NULL,

ActiveStatus int(1) default 1 NOT NULL,

ProductID INTEGER NOT NULL REFERENCES product(ProductID),

CreateTime TIMESTAMP NOT NULL,

UpdateTime TIMESTAMP NOT NULL

);

执行结果:

mysql> CREATE TABLE TestRelease(

-> ReleaseID INTEGER NOT NULL PRIMARY KEY AUTO_INCREMENT,

-> Name VARCHAR(128) NOT NULL,

-> Version VARCHAR(128) NOT NULL,

-> SubVersion VARCHAR(128) NOT NULL,

-> ActiveStatus int(1) default 1 NOT NULL,

-> ProductID INTEGER NOT NULL REFERENCES product(ProductID),

-> CreateTime TIMESTAMP NOT NULL,

-> UpdateTime TIMESTAMP NOT NULL

-> );

Query OK, 0 rows affected (0.05 sec)

执行成功。

通过这个教训可以得知,其它的保留字段都不可以使用,例如:order table之类的,下次再设计SQL的初期就需要注意到这些问题,可以在开始阶段避免类似问题。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐