mysql 高级笔记

作者: 有点意思_yxwn | 来源:发表于2018-08-10 15:06 被阅读0次

    ?xml version="1.0" encoding="UTF-8"?

    在MySQL中删除一张表或一条数据的时候,出现

    [Err] 1451 -Cannot delete or update a parent row: a foreign key constraint fails (...)

    这是因为MySQL中设置了foreign key关联,造成无法更新或删除数据。可以通过设置FOREIGN_KEY_CHECKS变量来避免这种情况。

    我们可以使用

        SET FOREIGN_KEY_CHECKS=0;

    来禁用外键约束.

    之后再用

        SET FOREIGN_KEY_CHECKS=1;

    来启动外键约束.

    查看当前FOREIGN_KEY_CHECKS的值可用如下命令

        SELECT  @@FOREIGN_KEY_CHECKS;

    问题出现的原因: 

    MySQL 5.7.5及以上功能依赖检测功能。如果启用了ONLY_FULL_GROUP_BY SQL模式(默认情况下),MySQL将拒绝选择列表,HAVING条件或ORDER BY列表的查询引用在GROUP BY子句中既未命名的非集合列,也不在功能上依赖于它们。(5.7.5之前,MySQL没有检测到功能依赖关系,默认情况下不启用ONLY_FULL_GROUP_BY。有关5.7.5之前的行为的说明,请参见“MySQL 5.6参考手册”。)

    用sql查询

    select @@global.sql_mode

    查询出来的值为:

    ONLY_FULL_GROUP_BY,STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION

    去掉ONLY_FULL_GROUP_BY,重新设置值

    set@@global.sql_mode="STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION"

    相关文章

      网友评论

        本文标题:mysql 高级笔记

        本文链接:https://www.haomeiwen.com/subject/ntvlpftx.html