为什么phpmyadmin不为枚举类型创建值?

时间:2016-10-05 12:39:00

标签: phpmyadmin

我是mysql的新手,所以我使用phpmyadmin在数据库中创建表。我有enum类型的现场制造商,其中包含可能的值" manufacturer1"," manufacturer2",...

我选择ENUM类型并点击"编辑ENUM / SET值"并弹出一个窗口询问所需的值。我休息说明,按"去"和'制造商1','制造商2','制造商3','制造商4'没有写入长度/值。

当我尝试创建表时,我得到1064语法错误。当我点击"预览SQL"我明白了:

CREATE TABLE `test4_db`.`product` ( `product_id` INT(11) NOT NULL AUTO_INCREMENT , `image_url` VARCHAR(255) NOT NULL , `manufacturer` ENUM(0) NOT NULL DEFAULT 'Manufacturer1' , `health` ENUM(0) NOT NULL , `missing` INT(11) NOT NULL , `statuss` ENUM(0) NOT NULL DEFAULT 'available' , `owner_id` INT(11) NOT NULL , `holder_id` INT(11) NOT NULL , PRIMARY KEY (`puzzle_id`)) ENGINE = InnoDB CHARSET=utf8 COLLATE utf8_bin;

为什么phpmyadmin写ENUM(0)而不是ENUM('制造商1','制造商2','制造商3','制造商4' )?

2 个答案:

答案 0 :(得分:5)

这是phpMyAdmin 4.6.4的错误。

请参阅此内容 - https://github.com/phpmyadmin/phpmyadmin/issues/12480

这将在4.6.5中修复。

同时,您只需执行"预览SQL",复制生成的SQL,并将ENUM(0)替换为您想要的值。

或者,使用以前版本的phpMyAdmin。

答案 1 :(得分:0)

使用此功能,但请记住编辑healthstatuss列的枚举。我刚刚添加了例如。

CREATE TABLE `test4_db`.`puzzles` ( 
    `puzzle_id` INT(11) NOT NULL AUTO_INCREMENT ,
    `image_url` VARCHAR(255) NOT NULL ,
    `manufacturer` ENUM('Manufacturer1', 'Manufacturer2', 'Manufacturer3') NOT NULL DEFAULT 'Manufacturer1' ,
    `health` ENUM('y', 'n') NOT NULL ,
    `missing` INT(11) NOT NULL ,
    `statuss` ENUM('y', 'n') NOT NULL DEFAULT 'available' ,
    `owner_id` INT(11) NOT NULL ,
    `holder_id` INT(11) NOT NULL ,
PRIMARY KEY (`puzzle_id`))
ENGINE = InnoDB CHARSET=utf8 COLLATE utf8_bin;

最好使用@Abhrapratim Nag

提到的查询而不是UI