Не могу создать таблицу. Не могу найти причину

Что не так с этим 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 ответа

Решение

VARCHAR Требуется длина поля в скобках. Ты нуждаешься в этом,

`format_id` VARCHAR(10) NOT NULL,

Но это может быть неправильно, просто продолжайте читать. В вашем коде много проблем.

  1. Из его названия format_id Кажется, INT не последовательность символов. Ты имел ввиду

    format_id INT NOT NULL,

  2. двойная кавычка в "order" не поддерживается в MySQL использовать backtick

    `order` INT NOT NULL,
    
  3. 0 длина VARCHAR на format_name а также file_path не имеет смысла. Ты имел ввиду?

    `format_name` VARCHAR( 40 ) NOT NULL,
    `file_path` VARCHAR( 40 ) NOT NULL,
    
  4. Вы пропустили e на update_dat поле. Кажется, ты не пропустил это create_date совсем.

    `update_date` TIMESTAMP NOT NULL,
    

Вы можете использовать как это

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` )
);
 "order"INT NOT NULL ,

Вы не можете использовать кавычки в качестве идентификаторов полей в MySQL. Используйте backticks:

`order` INT NOT NULL,

обратите внимание, однако, что order это зарезервированное слово в MySQL. Вы сможете создать поле, но вам придется все время оборачивать термин в кавычки.

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` )
);
Другие вопросы по тегам