我是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' )?
答案 0 :(得分:5)
这是phpMyAdmin 4.6.4的错误。
请参阅此内容 - https://github.com/phpmyadmin/phpmyadmin/issues/12480
这将在4.6.5中修复。
同时,您只需执行"预览SQL",复制生成的SQL,并将ENUM(0)替换为您想要的值。
或者,使用以前版本的phpMyAdmin。
答案 1 :(得分:0)
使用此功能,但请记住编辑health
和statuss
列的枚举。我刚刚添加了例如。
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