我的操作:删除一个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; // 开启外键约束检查,以保持表结构完整性
