无法创建表。找不到原因

时间:2013-01-23 10:08:20

标签: mysql

这个SQL出了什么问题?为什么我不能运行它?

CREATE TABLE `test` (

`format_id` VARCHAR NOT NULL ,
bef_aft_flag TINYINT NOT NULL ,
 "order"INT NOT NULL ,
`format_name` VARCHAR( 0 ) NOT NULL ,
`file_path` VARCHAR( 0 ) NOT NULL ,
`create_date` TIMESTAMP NOT NULL ,
`update_dat` TIMESTAMP NOT NULL ,
PRIMARY KEY ( `format_id` )
);


#1064 - 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 'NOT NULL , bef_aft_flag TINYINT NOT NULL , "order"INT NOT NULL , `format_name` ' at line 3

4 个答案:

答案 0 :(得分:3)

VARCHAR要求括号中的字段长度。你需要这个,

`format_id` VARCHAR(10) NOT NULL,

但这可能是错的,只是继续阅读。你的代码中存在很多问题。

  1. 从名称format_id看来,INT不是字符序列。你的意思是

    format_id INT NOT NULL,

  2. MySQL使用反引号中不支持"order"中的双引号

    `order` INT NOT NULL,
    
  3. {li>

    0 VARCHAR format_name file_path`format_name` VARCHAR( 40 ) NOT NULL, `file_path` VARCHAR( 40 ) NOT NULL, 没有意义。你的意思是?

    e
  4. 您是否遗漏了update_dat字段中的create_date条。看来你根本没有错过它`update_date` TIMESTAMP NOT NULL,

    {{1}}

答案 1 :(得分:2)

你可以这样使用

CREATE TABLE `test` (

`format_id` VARCHAR(255) NOT NULL ,
`bef_aft_flag` TINYINT(3) NOT NULL ,
 `order` INT(11) NOT NULL ,
`format_name` VARCHAR(255) NOT NULL ,
`file_path` VARCHAR(255) NOT NULL ,
`create_date` TIMESTAMP NOT NULL ,
`update_dat` TIMESTAMP NOT NULL ,
PRIMARY KEY ( `format_id` )
);

答案 2 :(得分:1)

 "order"INT NOT NULL ,

您不能在mySQL中使用引号作为字段标识符。使用反引号:

`order` INT NOT NULL,

但请注意,order是mySQL中的保留字。您将能够创建该字段,但您必须始终将该术语包装在反引号中。

答案 3 :(得分:0)

CREATE TABLE `test` (
`format_id` VARCHAR(20) NOT NULL  ,
bef_aft_flag TINYINT NOT NULL ,
 `order` INT NOT NULL ,
`format_name` VARCHAR(0) NOT NULL ,
`file_path` VARCHAR(0) NOT NULL ,
`create_date` TIMESTAMP NOT NULL ,
`update_dat` TIMESTAMP NOT NULL ,
PRIMARY KEY ( `format_id` )
);