mysql错误1064

xfyts7mz  于 2021-07-29  发布在  Java
关注(0)|答案(2)|浏览(334)

很好的一天。我想添加一个 suppliers 当我试图保存时,它抛出这个错误。
1064-您的sql语法有错误;请查看与您的mysql服务器版本对应的手册,以获取正确的语法,以便在“0”(不为null)主键附近使用( supp_id ),独一无二 supp_name ( supp_name ))'在第1行
我已附上我的sql语句。

CREATE TABLE `project_inv`.`suppliers` ( 
    `supp_id` INT(11) NOT NULL AUTO_INCREMENT , 
    `supp_name` VARCHAR(255) NOT NULL , 
    `supp_addr` VARCHAR(300) NOT NULL , 
    `supp_phone` INT(20) NOT NULL , 
    `supp_email` VARCHAR(255) NOT NULL , 
    `supp_notes` VARCHAR(1000) NOT NULL , 
    `status` ENUM(0) NOT NULL , 
    PRIMARY KEY (`supp_id`), 
    UNIQUE `supp_name` (`supp_name`)
) ENGINE = InnoDB;

我想这是我唯一的钥匙,但我真的不知道是什么错误。任何形式的帮助都将不胜感激。谢谢

v7pvogib

v7pvogib1#

这不是关于 PRIMARY 或者 UNIQUE 声明,但关于 ENUM() :它需要字符串文字,因此需要用单引号将列表中的值括起来:

CREATE TABLE `project_inv`.`suppliers` ( 
    `supp_id` INT(11) NOT NULL AUTO_INCREMENT , 
    `supp_name` VARCHAR(255) NOT NULL , 
    `supp_addr` VARCHAR(300) NOT NULL , 
    `supp_phone` INT(20) NOT NULL , 
    `supp_email` VARCHAR(255) NOT NULL , 
    `supp_notes` VARCHAR(1000) NOT NULL , 
    `status` ENUM('0') NOT NULL , 
    PRIMARY KEY (`supp_id`), 
    UNIQUE `supp_name` (`supp_name`)
) ENGINE = InnoDB;

但是有一个不可为空的 ENUM() 只允许有一个值的列没有什么意义-基本上是强制每一行都有相同的值( '0' ). 所以要么在列表中添加更多值。。。或者干脆把柱子拆了。

e0bqpujr

e0bqpujr2#

通过在枚举中使用字符串尝试如下所示我使用了'n'instated 0

CREATE TABLE `project_inv`.`suppliers` ( 
    `supp_id` INT(11) NOT NULL AUTO_INCREMENT , 
    `supp_name` VARCHAR(255) NOT NULL , 
    `supp_addr` VARCHAR(300) NOT NULL , 
    `supp_phone` INT(20) NOT NULL , 
    `supp_email` VARCHAR(255) NOT NULL , 
    `supp_notes` VARCHAR(1000) NOT NULL , 
    `status` ENUM('N') NOT NULL , 
    PRIMARY KEY (`supp_id`), 
    UNIQUE `supp_name` (`supp_name`)
) ENGINE = InnoDB;

相关问题