错误1064(42000):您的SQL语法有错误

时间:2014-01-13 13:39:04

标签: mysql

尝试使用以下方法在MySQL中创建表:

 CREATE TABLE users (  
    id INT(5) NOT NULL ZEROFILL AUTO_INCREMENT PRIMARY KEY ,  
    passport VARCHAR(250) NOT NULL ,
    nickname VARCHAR(250) NOT NULL ,
    mail VARCHAR(250) NOT NULL ,  
    password VARCHAR(250) NOT NULL ,  
    age INT(2) NOT NULL ,
    sex VARCHAR(250) NOT NULL ,  
    is_registered VARCHAR(1) NOT NULL DEFAULT 1 ,
    is_registered_timestamp TIMESTAMP NOT NULL ZEROFILL , 
    is_admin VARCHAR(1) NOT NULL DEFAULT 0 ,
    is_admin_timestamp TIMESTAMP NOT NULL ZEROFILL ,
    is_banned VARCHAR(1) NOT NULL DEFAULT 0 ,
    is_banned_timestamp TIMESTAMP NOT NULL ZEROFILL
    ); 

获取错误消息:

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 'ZEROFILL AUTO_INCREMENT PRIMARY KEY ,
`passport` VARCHAR(250) NOT NULL ,
`nick' at line 2

这是什么意思?我是MySQL的新手,并尽可能地阅读以尝试理解不同的数据类型,并假设我使用了正确的数据类型,因此无法理解此错误消息试图说出的内容。

2 个答案:

答案 0 :(得分:3)

ZEROFILL是数据类型

的属性

更改ZEROFILL和NOT NULL的顺序,如下面的查询

CREATE TABLE `users` (  
`id` INT(5) ZEROFILL NOT NULL AUTO_INCREMENT PRIMARY KEY ,  
...

供参考阅读this

答案 1 :(得分:0)

第一个建议,看起来你正在从MySQL工作台生成DDL,我也尝试过,但它也给了我这样的错误。尝试在适当的建模工具tike Toad或类似的东西中进行该表(数据库)的模型,我尝试了它并且每次都有效。

对于该语法,看起来,编译器没有识别一些关键词,如ZEROFILL,AUTO INCREMENT。自动增量也可以是整个数据库(方案)的属性,因此您可以在全局中打开它,没有理由为每个表设置它。如果我没记错,MySQL中的bigges问题以及使用生成的DDL是[`]符号,请尝试删除它们。