【问题标题】:I got error while entering the primary key in database在数据库中输入主键时出错
【发布时间】:2015-12-01 19:12:32
【问题描述】:

现在,我创建的数据库中有 10 列,但我无法创建数据库表,并且出现“#1067 - Invalid default value for 'primary_key”错误。

这是我的sql代码:

CREATE TABLE `quiz`.`user_details` ( `primary_key` INT(6) UNSIGNED NOT NULL DEFAULT '1' AUTO_INCREMENT , `foreign_key` INT(6) UNSIGNED NOT NULL DEFAULT '1' AUTO_INCREMENT , `firstname` VARCHAR(20) NOT NULL , `lastname` VARCHAR(20) NOT NULL , `username` VARCHAR(20) NOT NULL , `password` VARCHAR(20) NOT NULL , `email` VARCHAR(20) NOT NULL , `phone_number` INT(10) NOT NULL , `address` CHAR(50) NOT NULL , `exam_taking` INT(3) NOT NULL AUTO_INCREMENT , PRIMARY KEY (`primary_key`(6)), UNIQUE `foreign_key` (`foreign_key`)) ENGINE = InnoDB;

【问题讨论】:

  • 从您的声明中删除 DEFAULT '1'。您不能以这种方式默认自动递增字段。
  • 去掉 DEFAULT '1' 并重试
  • 并注意'1' 是一个字符串。正确地说,它应该只是 1,使其成为数字文字。
  • 查看您的表定义后,我真的希望您打算以纯文本形式存储用户passwords...您应该使用为 salted hashes 提供更多空间。

标签: php mysql sql


【解决方案1】:

不要添加 DEFAULT 值,因为您已经将主键定义为 AUTO INCREMENT。 可能重复。 #1067 - Invalid default value for 'bonusid' how can i fix this error?

【讨论】:

    【解决方案2】:

    您不能为自动递增字段设置默认值。只需将定义更改为:

    CREATE TABLE `quiz`.`user_details` 
      (`primary_key` INT(6) UNSIGNED NOT NULL AUTO_INCREMENT,
       `foreign_key` INT(6) UNSIGNED NOT NULL AUTO_INCREMENT ,
       `firstname` VARCHAR(20) NOT NULL ,
       `lastname` VARCHAR(20) NOT NULL , 
       `username` VARCHAR(20) NOT NULL , 
       `password` VARCHAR(20) NOT NULL , 
       `email` VARCHAR(20) NOT NULL , 
       `phone_number` INT(10) NOT NULL , 
       `address` CHAR(50) NOT NULL , 
       `exam_taking` INT(3) NOT NULL AUTO_INCREMENT , 
       PRIMARY KEY (`primary_key`), 
       UNIQUE `foreign_key` (`foreign_key`)) ENGINE = InnoDB;
    

    另请注意,不是外键的属性的名称 foreign_key 确实具有误导性。

    【讨论】:

      猜你喜欢
      • 2019-08-21
      • 1970-01-01
      • 2023-03-22
      • 2021-09-30
      • 1970-01-01
      • 2019-05-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多