0

这个 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

4 回答 4

3

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

`format_id` VARCHAR(10) NOT NULL,

但这可能是错误的,请继续阅读。你的代码有很多问题。

  1. 从它的名字看,format_id似乎 INT 不是字符序列。你的意思是

    format_id INT NOT NULL,

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

    `order` INT NOT NULL,
    
  3. 0长度 VARCHAR,没有意义format_namefile_path你的意思是?

    `format_name` VARCHAR( 40 ) NOT NULL,
    `file_path` VARCHAR( 40 ) NOT NULL,
    
  4. 你有没有eupdate_dat球场上错过任何东西。看来你根本没有错过create_date

    `update_date` TIMESTAMP NOT NULL,
    
于 2013-01-23T10:11:14.350 回答
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` )
);
于 2013-01-23T10:15:00.857 回答
1
 "order"INT NOT NULL ,

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

`order` INT NOT NULL,

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

于 2013-01-23T10:12:39.807 回答
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` )
);
于 2013-01-23T10:23:18.903 回答