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)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • input file 修改按钮名称[通俗易懂]

    input file 修改按钮名称[通俗易懂]解决方法:1、页面上放个隐藏的2、然后加上一个文本input(type=”text”)和一个按钮input(type=”button”)3、点按钮的时候调用的click选择文件4、在的onchange事件中把其值显示在文本input中5、注意把文本input设置成只读的,防止出错实例如下:

    2022年7月14日
    93
  • IntelliJ IDEA报错:Error:(1, 1) java: 非法字符: ‘\ufeff'[通俗易懂]

    IntelliJ IDEA报错:Error:(1, 1) java: 非法字符: ‘\ufeff'[通俗易懂]当我把Eclipse中的类拷贝到idea项目中,就出现了这个错误。查找资料得知:Eclipse可以智能的把UTF-8+BOM文件转为普通的UTF-8文件,但使用IDEA编译UTF-8+BOM编码的文件时会出现这个错误:Error:(1, 1) java: 非法字符: ‘\ufeff’。关于UTF-8+BOM 参考 https://www.zhihu.com/question/20167122/an…

    2022年6月13日
    111
  • table array什么意思_html中table属性

    table array什么意思_html中table属性IamcreatingalargeHTMLtableandIhaveproblemwithpagebreaksasyoucanseeinthefollowingimage:Isthereamethodsettledowntheproblemautomatically?Orwhatisthewaytodoit?Tryaddi…

    2022年9月8日
    0
  • 24.CSS表格与列表

    24.CSS表格与列表

    2022年3月13日
    32
  • 数据预处理无量纲化处理_统计数据的预处理

    数据预处理无量纲化处理_统计数据的预处理1.无量纲化定义无量纲化,也称为数据的规范化,是指不同指标之间由于存在量纲不同致其不具可比性,故首先需将指标进行无量纲化,消除量纲影响后再进行接下来的分析。2.无量纲化方法无量纲化方法有很多,但

    2022年8月5日
    3
  • native ascii_编码转换在线

    native ascii_编码转换在线1、获取native2ascii:安装了jdk后,假如你是在windows上安装,那么在jdk的安装目录下,会有一个bin目录,其中native2ascii.exe正是。2、native2ascii的命令行的命名格式:native2ascii-[options][inputfile[outputfile]]说明:-[options]:表示命令开关,有两个选项可供选择-r…

    2022年9月12日
    0

发表回复

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

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