我的编程空间,编程开发者的网络收藏夹
学习永远不晚

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

短信预约 信息系统项目管理师 报名、考试、查分时间动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

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参考时候不会出现歧义。

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

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

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

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

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

数据库表A:CREATE TABLE task_desc_tab (id INT(11) PRIMARY KEY NOT NULL COMMENT '自增主键' AUTO_INCREMENT,taskname
2022-05-23

mysql表格创建报错怎么解决

在 MySQL 中,创建表格时可能会出现各种报错。以下是一些常见的创建表格报错及解决方法:语法错误:在创建表格时可能会出现语法错误,通常是因为表格定义的字段类型、属性或约束不正确。检查表格定义语句,确认语法错误并进行修正。表格已存在:如果尝
mysql表格创建报错怎么解决
2024-05-15

MySQL创建表格报错怎么解决

在MySQL创建表格时报错通常是由于语法错误或者数据类型不匹配引起的。以下是一些常见的解决方法:检查语法错误:请仔细检查CREATE TABLE语句中的每个关键字和参数,确保没有拼写错误或者缺少分号等语法规则。检查数据类型:确认表格中的每个
MySQL创建表格报错怎么解决
2024-05-13

mysql创建临时表报错怎么解决

当MySQL创建临时表时报错,可能存在以下几种解决方案:检查SQL语句是否正确:确保CREATE TEMPORARY TABLE语句的语法正确,包括表名、字段名、数据类型等是否正确。检查权限:确保当前用户拥有创建临时表的权限。如果没有权限,
mysql创建临时表报错怎么解决
2024-04-09

mysql创建表设置表主键id从1开始自增的解决方案

目录一.问题描述二.解决方案1.实现步骤2.演示总结一.问题描述当我们在做项目的时候,创建一张用户表,如何让该表的主键id从0开始自增?网上搜索了很多解决方案,最后发现了一种方法必实现且有效的方案。下面就来介绍实现方法二.解决方案1.
2023-04-19

如何解决MySQL报错:无法创建表,表已存在

当MySQL报错提示“无法创建表,表已存在”时,说明要创建的表名在数据库中已经存在了。解决这个问题有两种方法:1. 更改表名:可以尝试更改要创建的表的名称,确保新表的名称在数据库中是唯一的。例如,如果要创建的表名为"mytable",可以更
2023-10-10

mysql创建外键约束不成功怎么解决

创建外键约束不成功可能有多种原因,以下是一些可能的解决方法:检查表结构:确保要创建外键约束的两个表的字段类型和长度必须完全相同,否则无法成功创建外键约束。检查数据一致性:确保要创建外键约束的字段中的数据必须符合外键约束的要求,例如在主表中的
mysql创建外键约束不成功怎么解决
2024-04-09

如何解决MySQL报错:无法创建表,错误编号:121

MySQL报错:无法创建表,错误编号:121通常是由于表定义中的某些约束条件冲突导致的。要解决这个问题,可以按照以下步骤进行:1. 检查表定义中的约束条件是否正确,并确保它们没有冲突。可以检查主键、唯一键、外键和默认值等约束条件。2. 如果
2023-10-10

如何解决MySQL报错:无法创建表,错误编号:150

MySQL报错:无法创建表,错误编号:150通常是由于外键约束导致的。解决此问题,可以按照以下步骤进行操作:1. 检查表之间的关系:确定是否在创建表时使用了外键约束。2. 确定外键约束的名称:使用SHOW CREATE TABLE语句查看表
2023-10-18

如何解决MySQL报错:无法创建表,错误编号:139

MySQL报错:无法创建表,错误编号:139 是由于创建表时的语法错误导致的。解决方法如下:1. 检查创建表的语法是否正确,包括表名、列名、数据类型等是否符合MySQL的语法规范。可以参考MySQL的官方文档或其他相关的教程。2. 检查是否
2023-10-18

mysql创建外键约束总不成功怎么解决

创建外键约束失败可能有多种原因,下面列举了一些常见的解决方法:1. 数据类型不一致:外键字段和参照表的字段数据类型必须完全一致。如果数据类型不一致,可以尝试修改字段数据类型或者使用类型转换函数。2. 字段长度不一致:外键字段和参照表的字段长
2023-08-30

sql创建临时表报错怎么解决

在 SQL 中创建临时表时可能会出现一些常见的报错,其中一些可能是由于语法错误或权限问题引起的。以下是一些常见的解决方法:检查语法错误:确保 SQL 语句中的临时表名称、字段名称和数据类型等都是正确的。如果出现语法错误,可以尝试根据报错信息
sql创建临时表报错怎么解决
2024-04-09

mysql创建函数报错怎么解决

当在MySQL中创建函数时,可能会遇到各种错误。以下是一些常见的错误和解决方法:错误:函数已经存在解决方法:如果函数已经存在,则可以使用DROP FUNCTION语句删除函数,然后重新创建函数。错误:语法错误解决方法:检查函数的语法是否
mysql创建函数报错怎么解决
2024-04-09

编程热搜

目录