Mysql表创建外键报错解决方案

 更新时间:2020年09月15日 14:53:28   作者:bf378  
这篇文章主要介绍了Mysql表创建外键报错解决方案,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下

数据库表A:

CREATE TABLE task_desc_tab
(
  id INT(11) PRIMARY KEY NOT NULL COMMENT '自增主键' AUTO_INCREMENT,
  <strong>taskname</strong> VARCHAR(200) NOT NULL COMMENT '任务名字',
  sqlname VARCHAR(20) NOT NULL COMMENT 'sql文件名字',
  params VARCHAR(5000) NOT NULL COMMENT '任务参数,格式为一个JSON字符串',
  updatetime TIMESTAMP DEFAULT CURRENT_TIMESTAMP COMMENT '更新时间',
  detail VARCHAR(3000) COMMENT '任务一些描述信息,只是备注信息作用'
)
 ENGINE = InnoDB
 DEFAULT CHARSET = utf8;

数据库B:

CREATE TABLE exec_plan_tab
(
  id INT(11) PRIMARY KEY NOT NULL AUTO_INCREMENT,
  <strong>taskname</strong> VARCHAR(200) NOT NULL,
  startdate DATE NOT NULL,
  enddate DATE NOT NULL,
  updatetime TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
  CONSTRAINT exec_plan_tab_task_desc_tab_taskname_fk FOREIGN KEY (taskname) REFERENCES task_desc_tab (taskname)
)
 ENGINE = InnoDB
 DEFAULT CHARSET = utf8;

目标:创建表使得表B中的taskname为外键,参考表A中的taskname字段,创建表发现报错如下:

[2018-07-19 15:02:29] [HY000][150] Create table 'daxin/#sql-5d_30' with foreign key constraint failed. There is no index in the referenced table where the referenced columns appear as the first columns.
[2018-07-19 15:02:29] [HY000][1215] Cannot add foreign key constraint
[2018-07-19 15:02:29] [HY000][1215] Cannot add foreign key constraint 

经过排查找到问题原因: 表A中的taskname必须使用UNIQUE字段修饰,这样保证记录唯一性,当表B参考时候不会出现歧义。

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。

相关文章

  • Mysql中基本语句优化的十个原则小结

    Mysql中基本语句优化的十个原则小结

    这篇文章主要给大家总结介绍了Mysql中基本语句优化的十个原则,通过学习与记住它们,在构造sql时可以养成良好的习惯,文中介绍的相对比较详细与简单明了,需要的朋友们可以参考借鉴,下面来一起看看吧。
    2017-06-06
  • mysql 的indexof函数用法说明

    mysql 的indexof函数用法说明

    这篇文章主要介绍了mysql 的indexof函数用法说明,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2020-12-12
  • 利用SQL注入漏洞拖库的方法

    利用SQL注入漏洞拖库的方法

    利用SQL注入漏洞登录后台和利用SQL注入漏洞拖库是我学习了相关内容之后的一点小结,没啥深度,正如文章开头所说,权当总结,别无它意
    2012-01-01
  • windows2008 64位系统下MySQL 5.7绿色版的安装教程

    windows2008 64位系统下MySQL 5.7绿色版的安装教程

    这篇文章主要给大家分享了在windows2008 64位系统下MySQL 5.7绿色版的安装教程,文中将安装步骤介绍的非常详细,相信会对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面来一起看看吧。
    2017-05-05
  • MySQL UPDATE 语句的非标准实现代码

    MySQL UPDATE 语句的非标准实现代码

    这篇文章主要介绍了MySQL UPDATE 语句的非标准实现代码,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2021-04-04
  • 解决Mysql5.7中文乱码的问题

    解决Mysql5.7中文乱码的问题

    在使用mysql5.7时,会发现通过web端向数据库中写入中文后会出现乱码,但是在数据库中直接操作SQL语句插入数据后中文就显示正常,这个问题怎么解决呢,下面小编给大家分享下解决方案
    2017-03-03
  • MySQL进阶查询、聚合查询和联合查询

    MySQL进阶查询、聚合查询和联合查询

    这篇文章主要介绍了MySQL数据库的进阶查询,聚合查询及联合查询,文中有详细的代码示例,需要的朋友可以参考阅读
    2023-04-04
  • Navicat连接MySQL提示1045错误解决(重置MySQL密码)

    Navicat连接MySQL提示1045错误解决(重置MySQL密码)

    连接MySQL数据库时难免会遇到1045错误,主要是因为用户输入的用户名或密码错误被拒绝访问,如果不想重装,需要找回密码或者重置密码,这篇文章主要给大家介绍了关于Navicat连接MySQL提示1045错误解决的方法,主要是重置MySQL密码,需要的朋友可以参考下
    2023-04-04
  • MySQL存储过程的创建使用以及实现数据快速插入

    MySQL存储过程的创建使用以及实现数据快速插入

    因最近想要测试一下MySQL百万级数据处理过程,所以要一次对数据库快速插入大量数据,下面这篇文章主要给大家介绍了关于MySQL存储过程的创建使用以及实现数据快速插入的相关资料,需要的朋友可以参考下
    2023-03-03
  • MySQL ORDER BY 的实现分析

    MySQL ORDER BY 的实现分析

    总的来说,在 MySQL 中的ORDER BY有两种排序实现方式,一种是利用有序索引获取有序数据,另一种则是通过相应的排序算法,将取得的数据在内存中进行排序
    2012-07-07

最新评论