mysql 设置外键约束SET FOREIGN_KEY_CHECKS=1

mysql 设置外键约束SET FOREIGN_KEY_CHECKS=1

大家好,又见面了,我是全栈君。

1.问题描述:Mysql中如果表和表之间建立的外键约束,则无法删除表及修改表结构

解决方法:

在Mysql中取消外键约束: SET FOREIGN_KEY_CHECKS=0;

然后将原来表的数据导出到sql语句,重新创建此表后,再把数据使用sql导入,

然后再设置外键约束: SET FOREIGN_KEY_CHECKS=1;
 

2. MySQL 5.1.48 导入 MySQL 5.7.18 时遇到 T FOREIGN_KEY_CHECKS = 0 错误的解决方法

#1064 – You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ‘T FOREIGN_KEY_CHECKS = 0’ at line 1

经查询,这个是 mysql 启动和关闭外键约束的方法,去掉即可。

编辑数据库文件:

//去掉此行
SET FOREIGN_KEY_CHECKS = 0;

//去掉此行
SET FOREIGN_KEY_CHECKS = 1;

然后重新导入即可。

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

SELECT  @@FOREIGN_KEY_CHECKS;

4.外键使用实例

  CREATE TABLE cities
  (
     name VARCHAR(90),
     state CHAR(2) REFERENCES states   
  ) ENGINE = InnoDB; 
  -- Query OK, 0 rows affected (0.05 sec)
 
  -- Let's see DDL 查看表结构
  SHOW CREATE TABLE cities;  
 
  -- It does not have FOREIN KEY constraint 此时没有外键约束
  CREATE TABLE `cities` (
  `name` varchar(90) DEFAULT NULL,
  `state` char(2) DEFAULT NULL
  ) ENGINE=InnoDB DEFAULT CHARSET=utf8;

You have to use FOREIGN KEY clause in CREATE TABLE to specify a foreign key in MySQL:
//您必须在CREATE TABLE中使用外键子句来指定MySQL中的外键:

  DROP TABLE IF EXISTS cities; #删除原来创建的表
 
  CREATE TABLE cities
  (
     name VARCHAR(90),
     state CHAR(2),
     FOREIGN KEY (state) REFERENCES states(abbr) 
  ) ENGINE = InnoDB;   
 
  -- Let's see DDL now
  SHOW CREATE TABLE cities;  
 
  -- Now the table has FOREIGN KEY  现在表中有了外键
  CREATE TABLE `cities` (
    `name` varchar(90) DEFAULT NULL,
    `state` char(2) DEFAULT NULL,
    KEY `state` (`state`),
    CONSTRAINT `cities_ibfk_1` FOREIGN KEY (`state`) REFERENCES `states` (`abbr`)
  ) ENGINE=InnoDB DEFAULT CHARSET=utf8;

mysql 设置外键约束SET FOREIGN_KEY_CHECKS=1

mysql 设置外键约束SET FOREIGN_KEY_CHECKS=1

mysql 设置外键约束SET FOREIGN_KEY_CHECKS=1

 mysql 设置外键约束SET FOREIGN_KEY_CHECKS=1

 

参考:SET FOREIGN_KEY_CHECKS命令

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/111489.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • 交互式脚本_交互式和脚本式的区别

    交互式脚本_交互式和脚本式的区别带你打开脚本的大门,领略语言之美

    2022年8月16日
    9
  • html倒计时免费代码,JS倒计时代码汇总[通俗易懂]

    本文实例总结了常见的JS倒计时代码。分享给大家供大家参考。具体汇总如下:第一种:精确到秒的javascript倒计时代码HTML代码:离2010年还有:startclock()vartimerID=null;vartimerRunning=false;functionshowtime(){Today=newDate();varNowHour=Today.getHours…

    2022年4月6日
    76
  • 用python图像处理_python图像处理库

    用python图像处理_python图像处理库第1章图像处理入门1.1什么是图像处理及图像处理的应用1.1.1什么是图像以及图像是如何存储的1.1.2什么是图像处理1.1.3图像处理的应用1.2图像处理流程1.3在Python中安装不同的图像处理库1.3.1安装pip1.3.2在Python中安装图像处理库1.3.3安装Anaconda发行版1.3.4安装Jupyter笔记本1.4使用Pytho…

    2022年8月31日
    2
  • acwing-372. 棋盘覆盖(二分图)

    acwing-372. 棋盘覆盖(二分图)给定一个 N 行 N 列的棋盘,已知某些格子禁止放置。求最多能往棋盘上放多少块的长度为 2、宽度为 1 的骨牌,骨牌的边界与格线重合(骨牌占用两个格子),并且任意两张骨牌都不重叠。输入格式第一行包含两个整数 N 和 t,其中 t 为禁止放置的格子的数量。接下来 t 行每行包含两个整数 x 和 y,表示位于第 x 行第 y 列的格子禁止放置,行列数从 1 开始。输出格式输出一个整数,表示结果。数据范围1≤N≤100,0≤t≤100输出样例:8 0输出样例:32#include&l

    2022年8月10日
    10
  • 智能手机功能_android是什么品牌手机

    智能手机功能_android是什么品牌手机标签:小米(194)HTC(27)三星(1202)手机(807)打开各手机论坛,看到许多朋友在问usb调试在哪?usb调试模式怎么打开?“USB调试”是Android系统提供的一个用于开发工作的功能软件,在每个Android系统上都会自带,“USB调试”主要作用是在在计算机和Android设备之间复制数据、移动设备上安装应用程序。所以在我们联接电脑时,系统都会提示我们要打开“USB调试”。今天,…

    2022年9月12日
    1
  • Linux 镜像文件下载「建议收藏」

    Linux 镜像文件下载「建议收藏」CENTOS简介和镜像下载一、CENTOS下载各国镜像地址http://www.centos.org/modules/tinycontent/index.php?id=32二、中国大陆镜像部分ChinaCMCCTaianBranch(泰安移动)http://mirrors.ta139.com/centos/ChinaNetEase(163网

    2022年6月28日
    36

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号