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

来源:脚本之家  责任编辑:小易  

重新装追问重新装什么啊?追答我一般用phpmyadmin来创建数据库. 你也用这个吧,你的所有表引擎是一样的吗?会不会一个是MyISAM,一个是InnoDB?还有列的类型,长度都要一致~www.zgxue.com防采集请勿采集本网。

数据库表A:

那你应该在表 vet_specialties 上点击右键 ,然后找到Relationships/ForeignKeys中,然后选择相应的列。 或者直接写命令 ALTER TABLE vet_specialties ADD

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;

不要创建外键,创建外键极易出错并且会影响CRUD的效率,增加数据库负担。在实际开发中,我们都是将表与表之间字段的约束,通过代码中的业务逻辑来实现的。

数据库B:

mysql删除外键语法: 1 alter table ss_accesscode drop foreign key 外键约束名称; 外键定义: 如果公共关键字在一个关系中是主关键字,那么这个公共关键

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;

是使用的navicat吧? 这两个表好像引擎要改. 必须为InnoDB引擎才可以建立外键.而navicat建表默认为myISAM引擎. 修改方法:右键点击该表,选设计表,在选项

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

第一招、mysql服务的启动和停止 net stop mysql net start mysql 第二招、登陆mysql 语法如下: mysql -u用户名 -p用户密码 键入命令mysql -uroot -

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

详细说明可以百度搜2113我的博客5261: mysql foreign外键详细使用方法和使用事项_2018_lcf---------下面4102是使用方法使用外键的前提:16531. 表储存引擎必须是innodb,否则创建的外键无约束效果。2. 外键的列类型必须与父表的主键类型完全一致。3. 外键的名字不能重复(一般使用。建外键表两种方式(创建表时关联/添加外键)1) 第一种方式创建表时加外键使用实例:mysql> create table A( name char(12), id int(8) ,index(id))engine=innodb; //先建立A表,mysql> create table B( //建立B表,同时做外键-> id int(9),-> money int(9),-> index(id),-> foreign key(id) references A (id) //这个是必加项,foreign key(B表要关联的字段),references A表名 (对应字段)-> on delete cascade on update cascade //这里是可选项的,只加一项或都不加都可以的,看需求.-> )engine=innodb; //这个必须是innodb类型,并且和A表的一致第二方式在已有的表上做和A表关联的外键(最好是新建好没有记录的,不然会因为记录对不上而创建不成功)mysql> create table C( //这里先创建一个空表C-> id int(7),-> money int(5),-> index(id)-> )engine=innodb;mysql> alter table Cadd constraint abc //在C表上添加和表A关联的外键,constraint 外键名(自己任意取)-> foreign key(id) references A(id) //和创建时一样的输入-> on delete cascade on update cascade; //一样是可选项,这行不写也可以通过.注: @以上的cascade是上面介强的四种模式之一,是可以替换成其它模式的,如写成on update set null@还可以同时做两个外键,如写成foreign key(id,money) references A(id,money) 即可 @两张表关联字段名可以取不一样名字,但类型必须一致,/*bbsReply外键2113约5261束41021653*/ALTERTABLEbbsReplyADDCONSTRAINTFK_bbsReply_bbsSectionFOREIGNKEY(RSID)REFERENCESbbsSection(SID),GO,建立外键的前提2113:本表的列必须与外键类型相同5261(外键必须4102是外表主键)。外键作用: 使两张1653表形成关联,外键只能引用外表中的列的值!指定主键关键字: foreign key(列名)引用外键关键字: references <外键表名>(外键列名)事件触发限制: on delete和on update , 可设参数cascade(跟随外键改动), restrict(限制外表中的外键改动),set Null(设空值),set Default(设默认值),[默认]no action例如:outTable表 主键 id 类型 int创建含有外键的表:create table temp(id int,name char(20),foreign key(id) references outTable(id) on delete cascade on update cascade);说明:把id列 设为外键 参照外表outTable的id列 当外键的值删除本表中对应的列筛除 当外键的值改变 本表中对应的列值改变内容来自www.zgxue.com请勿采集。


  • 本文相关:
  • mysql索引详细介绍及正确使用方法
  • mysql生成指定位数的随机数及批量生成随机数的方法
  • mysql按时间统计数据的方法总结
  • mysql一键安装教程 mysql5.1.45全自动安装(编译安装)
  • 集群rpm安装mysql步骤详解
  • 从创建数据库到存储过程与用户自定义函数的小感
  • 重置mysql中表中自增列的初始值的实现方法
  • mac系统os x10.10版本安装最新5.7.9mysql的方法
  • mysql开启慢查询日志功能的方法
  • mysql数据存放的位置在哪
  • mysql 如何建立外键
  • mysql创建外键 报错
  • MySql如何创建外键
  • MySql创建外键报错1072
  • mysql表设置外键
  • mysql创建外键时报错,求助各位大神
  • mysql创建表时对于外键的删除处理
  • mysql两个数据表建立外键关联失败
  • mysql里面用语句建立表外键的命令
  • 在mysql中怎么建表的主外键关系
  • 网站首页网页制作脚本下载服务器操作系统网站运营平面设计媒体动画电脑基础硬件教程网络安全mssqlmysqlmariadboracledb2mssql2008mssql2005sqlitepostgresqlmongodbredisaccess数据库文摘数据库其它首页mysql外键基本功能与用法详解mysql外键的三种关系实例详解mysql数据库中数据表的优化、外键与三范式用法实例分析mysql创建数据表并建立主外键关系详解mysql外键约束常见操作方法示例【查看、添加、修改、删除】mysql无法创建外键的原因及解决方法mysql删除有外键约束的表数据方法介绍mysql删除表的时候忽略外键约束的简单实现mysql添加外键时报错:1215 cannot add the foreign key constraint的解决方法mysql使用外键实现级联删除与更新的方法mysql索引详细介绍及正确使用方法mysql生成指定位数的随机数及批量生成随机数的方法mysql按时间统计数据的方法总结mysql一键安装教程 mysql5.1.45全自动安装(编译安装)集群rpm安装mysql步骤详解从创建数据库到存储过程与用户自定义函数的小感重置mysql中表中自增列的初始值的实现方法mac系统os x10.10版本安装最新5.7.9mysql的方法mysql开启慢查询日志功能的方法mysql数据存放的位置在哪mysql安装图解 mysql图文安装教程can""""t connect to mysql servwindows下mysql5.6版本安装及配置mysql字符串截取函数substring的mysql创建用户与授权方法mysql提示:the server quit withmysql日期数据类型、时间类型使用mysql——修改root密码的4种方法mysql update语句的用法详解mysql之timestamp(时间戳)用法mysql索引对排序的影响实例分析关于mysql数据迁移--data目录直接替换注意如何恢复mysql的root口令mysql-group-replication 配置步骤(推荐)mysql中group by与having合用注意事项分享探究mysql优化器对索引和join顺序的选择mysql故障切换笔记之应用无感知设计详解关于mysql数据库格式化简单介绍mysql下完整导出导入实现方法mysql 如何插入随机字符串数据的实现方法
    免责声明 - 关于我们 - 联系我们 - 广告联系 - 友情链接 - 帮助中心 - 频道导航
    Copyright © 2017 www.zgxue.com All Rights Reserved