MySQL SQL 错误:1364 字段 'XXXX' 没有默认值

声明:本页面是StackOverFlow热门问题的中英对照翻译,遵循CC BY-SA 4.0协议,如果您需要使用它,必须同样遵循CC BY-SA许可,注明原文地址和作者信息,同时你必须将它归于原作者(不是我):StackOverFlow 原文地址: http://stackoverflow.com/questions/18316451/
Warning: these are provided under cc-by-sa 4.0 license. You are free to use/share it, But you must attribute it to the original authors (not me): StackOverFlow

提示:将鼠标放在中文语句上可以显示对应的英文。显示中英文
时间:2020-08-31 18:33:47  来源:igfitidea点击:

SQL error: 1364 Field 'XXXX' doesn't have a default value

mysqlsqlforeign-keys

提问by Aku

So I have, table courses:

所以我有,表课程:

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

and second table

和第二张桌子

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

When I make that insert

当我做那个插入

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

插入 appdziennik.courses (name, id_teacher, about, start_date, end_date) 值 ("Math",'7',"Math",'2013-08-01','2014-06-29');

I get that error:

我得到那个错误:

Error Code: 1364. Field 'teachers_id_teacher' doesn't have a default value

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

Where I made mistake? How i could fix it.

我哪里出错了?我怎么能解决它。

回答by Kermit

If you're sending an INSERTto table courses, there is no field id_teacher(you want teachers_id_teacher). Since you're using a foreign key, that key mustexist in table teachersbeforeyou INSERTa record into table courses. Also, you should only be using backticks (`) and single quotes (') in all your statements.

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

回答by Sarajog

you are trying to insert into the courses table for the column id_teacher a value but your not inserting a value for the column teachers_id_teacher. so I would propose to make the statement as followed:

您正在尝试将一个值插入到列 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');

Sarajog

萨拉若格