mysql - 错误 1452 : 23000 Cannot add or update a child row. ..mysql

标签 mysql sql database

我的代码是:

 CREATE DATABASE IF NOT EXISTS courses;

 USE 'courses'

 CREATE TABLE IF NOT EXISTS teachers(
      id INT(10) UNSIGNED NOT NULL AUTO_INCREMENT,
      name VARCHAR(50) NOT NULL COMMENT 'name',
      addr VARCHAR(255) NOT NULL COMMENT 'addr',
      phone INT(20) NOT NULL ,
      CONSTRAINT pkTeachers PRIMARY KEY (id) )ENGINE=InnoDB DEFAULT CHARSET=utf8;

 CREATE TABLE IF NOT EXISTS courses(
       id INT AUTO_INCREMENT NOT NULL,
       title VARCHAR(200) NOT NULL COMMENT 'title',
       length INT NOT NULL COMMENT 'length',
       cathegory INT NOT NULL COMMENT 'cathegory',
       description TEXT DEFAULT '' COMMENT 'description',
       previous INT NOT NULL COMMENT 'previous',
       CONSTRAINT pkCourses PRIMARY KEY (id),
       INDEX ixCathegory (cathegory),
       INDEX ixprevious (previous),
       CONSTRAINT fkPrevious FOREIGN KEY (previous) REFERENCES courses (id) )ENGINE=InnoDB DEFAULT CHARSET=utf8;

当我想将数据插入“类(class)”表时出现错误:

 mysql> INSERT INTO courses.courses (title, length, cathegory,
 description) VALUES ('title1', 213, 1, 'description1');

 ERROR 1452 (23000): Cannot add or update a child row: a foreign key
 constraint fails (`courses`.`courses`, CONSTRAINT `fkPrevious` FOREIGN
 KEY (`previous`) REFERENCES `courses` (`id`)) mysql    

但是如果我从 phpmyadmin 插入数据,所有操作都会成功执行。你能帮我解决这个错误吗? 附:

最佳答案

根据您的表结构,所有类(class)都必须有相应的先前类(class)。

尝试将您的previous列设置为INT NULL DEFAULT NULL,这将使您能够“没有以前的类(class)”并绕过这些项目的错误。

关于mysql - 错误 1452 : 23000 Cannot add or update a child row. ..mysql,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18802482/

相关文章:

stored-procedures - 如何在不锁定表的情况下执行存储过程?

mysql - 使用 group by 每 2 分钟对数据进行一次分组

php - mysql 在开始和/或结束时不断删除零

mysql - 如何使用 MySQL 获取子查询中的结果值并将其用于比较?

database - 在 Redis 中选择 SETNX 而不是 SET

java - 使用黑莓访问 Oracle 数据库?

mysql - 什么模式只匹配相同的数字(1111)并排除差异数字(1234)?

sql - 找出sql中递增的子序列

php - mySQL COUNT 与两个表上的 JOIN

java - 为文件存储预分配驱动器空间