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意味 VARCHARformat_nameありfile_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 に答える