Cause:Cannot delete or update a parent

    科技2026-06-20  8

    我的操作:删除一个id=1的一条数据.

    test.java

    //删除用户信息 @Test public void test5() { SqlSession sqlSession = SqlSessionFactoryUtils.getSessionFactory().openSession(); sqlSession.delete("user.deleteUser", 1); sqlSession.commit(); sqlSession.close(); }

    user.xml

    <delete id="deleteUser" parameterType="int"> delete from user where id=#{id} </delete>

    mybatis_day01数据库下的两张数据表user和order:

    user表:

     order表:

     

    user表:

     

    报错:

    org.apache.ibatis.exceptions.PersistenceException: ### Error updating database.  Cause: com.mysql.jdbc.exceptions.jdbc4.MySQLIntegrityConstraintViolationException: Cannot delete or update a parent row: a foreign key constraint fails (`mybatis_day01`.`order`, CONSTRAINT `FK_order_id` FOREIGN KEY (`user_id`) REFERENCES `user` (`id`) ON DELETE NO ACTION ON UPDATE NO ACTION) ### The error may involve user.deleteUser-Inline ### The error occurred while setting parameters ### SQL: delete from user where id=? ### Cause: com.mysql.jdbc.exceptions.jdbc4.MySQLIntegrityConstraintViolationException: Cannot delete or update a parent

    问题:user表的id外键关联order表,当删除的时候数据的时候,就会报Cannot delete or update a parent错.

    解决办法: 先关闭外键约束,执行删除操作,然后再开启外键约束

    SET foreign_key_checks = 0;  // 先设置外键约束检查关闭   // 删除数据,表或者视图   SET foreign_key_checks = 1; // 开启外键约束检查,以保持表结构完整性

    Processed: 0.009, SQL: 9