【问题标题】:SQL error: 1364 Field 'XXXX' doesn't have a default valueSQL 错误:1364 字段 'XXXX' 没有默认值
【发布时间】:2013-08-19 14:34:20
【问题描述】:

所以我有,餐桌课程:

CREATE  TABLE IF NOT EXISTS `AppDziennik`.`courses` (
  `id_course` INT NOT NULL AUTO_INCREMENT ,
  `name` VARCHAR(80) NOT NULL ,
  `teachers_id_teacher` INT NOT NULL ,
  `end_date` DATE NULL ,
  `about` VARCHAR(255) NULL ,
  `start_date` DATE NULL ,
  PRIMARY KEY (`id_course`) ,
  UNIQUE INDEX `id_course_UNIQUE` (`id_course` ASC) ,
  CONSTRAINT `fk_courses_teachers1`
    FOREIGN KEY (`teachers_id_teacher` )
    REFERENCES `AppDziennik`.`teachers` (`id_teacher` )
    ON DELETE NO ACTION
    ON UPDATE NO ACTION)
ENGINE = InnoDB

第二张桌子

CREATE  TABLE IF NOT EXISTS `AppDziennik`.`teachers` (
  `id_teacher` INT NOT NULL AUTO_INCREMENT ,
  `name` VARCHAR(45) NOT NULL ,
  `surname` VARCHAR(45) NOT NULL ,
  `about` VARCHAR(255) NULL ,
  `id_class` INT NULL ,
  `rank` VARCHAR(45) NULL ,
  `logins_id_login` INT NOT NULL ,
  PRIMARY KEY (`id_teacher`) ,
  INDEX `fk_teachers_classes1_idx` (`id_class` ASC) ,
  INDEX `fk_teachers_logins1_idx` (`logins_id_login` ASC) ,
  CONSTRAINT `fk_teachers_classes1`
    FOREIGN KEY (`id_class` )
    REFERENCES `AppDziennik`.`classes` (`id_class` )
    ON DELETE NO ACTION
    ON UPDATE NO ACTION,
  CONSTRAINT `fk_teachers_logins1`
    FOREIGN KEY (`logins_id_login` )
    REFERENCES `AppDziennik`.`logins` (`id_login` )
    ON DELETE NO ACTION
    ON UPDATE NO ACTION)
ENGINE = InnoDB

当我插入时

插入 appdziennik.courses (姓名,id_teacher,关于,start_date,end_date) 值(“数学”、“7”、“数学”、“2013-08-01”、“2014-06-29”);

我得到了那个错误:

错误代码:1364。字段“teachers_id_teacher”没有默认值 价值

我在哪里做错了?我该如何解决它。

【问题讨论】:

  • courses 中的列名似乎是 teachers_id_teacher 而不是 id_teacher - 此问题中的拼写错误或输入您的代码?
  • 我对 MySQL WorkBench 的自动生成代码过于信任。当我制作时,它会调用这样的列(teachers_id_teacher)。无论如何 THX

标签: mysql sql foreign-keys


【解决方案1】:

如果您将INSERT 发送到表courses,则没有字段id_teacher(您需要teachers_id_teacher)。由于您使用的是外键,因此该键必须存在于表 teachers之前您将 INSERT 记录到表 courses 中。此外,您应该只在所有语句中使用反引号 (`) 和单引号 (')。

【讨论】:

    【解决方案2】:

    您正尝试在课程表中为 id_teacher 列插入一个值,但您没有为列 Teachers_id_teacher 插入一个值。所以我建议如下声明:

    insert into appdziennik.courses (name, teachers_id_teacher, about, start_date, end_date) values ("Math",'7',"Math",'2013-08-01','2014-06-29');
    

    萨拉乔格

    【讨论】:

    • 那就是这样:错误代码:1364。字段“id_teacher”没有默认值
    猜你喜欢
    • 2017-03-02
    • 1970-01-01
    • 2013-03-04
    • 2018-08-14
    • 2019-11-23
    • 2013-09-16
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多