这个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
答案 0 :(得分:3)
VARCHAR
要求括号中的字段长度。你需要这个,
`format_id` VARCHAR(10) NOT NULL,
但这可能是错的,只是继续阅读。你的代码中存在很多问题。
从名称format_id
看来,INT不是字符序列。你的意思是
format_id INT NOT NULL,
MySQL使用反引号中不支持"order"
中的双引号
`order` INT NOT NULL,
0
VARCHAR
format_name
file_path
和`format_name` VARCHAR( 40 ) NOT NULL,
`file_path` VARCHAR( 40 ) NOT NULL,
没有意义。你的意思是?
e
您是否遗漏了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` )
);