mysql处理添加外键时 error 150 问题】的更多相关文章

当你试图在mysql中创建一个外键的时候,这个出错会经常发生,这是非常令人沮丧的.像这种不能创建一个.frm 文件的报错好像暗示着操作系统的文件的权限错误或者其它原因,但实际上,这些都不是的,事实上,这个mysql报错已经被报告是一个mysql本身的bug并出现在mysql 开发者列表当中很多年了,然而这似乎又是一种误导. 在很多实例中,这种错误的发生都是因为mysql一直以来都不能很好的支持的关系的问题, 更不幸的是它也并没有指明到底是哪一个问题会导致上面那种错误,下面我把导致这个可怕 的15…
当你试图在mysql中创建一个外键的时候,这个出错会经常发生,这是非常令人沮丧的.像这种不能创建一个.frm 文件的报错好像暗示着操作系统的文件的权限错误或者其它原因,但实际上,这些都不是的,事实上,这个mysql报错已经被报告是一个mysql本身的bug并出现在mysql 开发者列表当中很多年了,然而这似乎又是一种误导. 在很多实例中,这种错误的发生都是因为mysql一直以来都不能很好的支持的关系的问题, 更不幸的是它也并没有指明到底是哪一个问题会导致上面那种错误,下面是error 150问题…
--MySQL里创建外键时错误的解决 --------------------------------2014/04/30 在MySQL里创建外键时(Alter table xxx add constraint fk_xxx foreign key),提示错误,但只提示很简单的信息:ERROR 1005 (HY000): Can't create table '.\env_mon\#sql-698_6.frm' (errno: 150).根本起不到解决问题的作用. 要看错误的详细提示,可以使用命…
在数据库中建立一个新表(表引擎为InnoDB)时, 需要用到外键, 所以就在建表的时候加了一句foreign key (column) references table_name.但是执行时出现 ERROR 1005 (HY000): Can't create table   (errno: 150) 通过查找得知, 这是由于添加外键约束引起的错误, 利用show engine innodb status指令查看数据库的状态信息, 查看最近外键信息部分 ---------------------…
MySQL支持外键的存储引擎只有InnoDB,在创建外键的时候,要求父表必须有对应的索引,子表在创建外键的时候也会自动创建对应的索引.在创建索引的时候,可以指定在删除.更新父表时,对子表进行的相应操作,包括RESTRICT.NOACTION.SET NULL和CASCADE.其中RESTRICT和NO ACTION相同,是指在子表有关联记录的情况下父表不能更新:CASCADE表示父表在更新或者删除时,更新或者删除子表对应记录:SET NULL则是表示父表在更新或者删除的时候,子表的对应字段被SE…
Can't create table './store/#sql-b2c_1a.frm' (errno: 150)解决方法 错误原因有四: 1.外键的引用类型不一样,主键是int外键是char 2.找不到主表中 引用的列 3.主键和外键的字符编码不一致 4.还有要建立外键的话,要先建立索引.没有建立索引也会出错. 我的错误原因是将一个bigint的外键指向了一个int类型的主键,都改成bigint或者int就解决了. 转载自: http://www.cnblogs.com/xwdreamer/a…
由于表结构更改,使用新建表,现有部分表需要更改外键,将引用更改到新建表的相应字段.在更改过程中,部分表出现如下错误提示: ALTER TABLE 语句与 COLUMN FOREIGN KEY 约束 '' 冲突.该冲突发生于数据库 "***",表 "***", column "***". 反复查看后,包括字段类型.长度等完全一致.不得其解,在网上找了下,发现有如下文章[1]提示: 根源: XXX表有数据 解决:删掉XXX表的数据再执行sql语句 恍…
问题的原因是新增的外键字段没有默认值,造成的,有很多方法可以解决,我这里通过修改生成的迁移文件,设定为可空,或者设置默认值即可.具体看情况使用.…
创建表student和表score,表student设置主键,表score设置表student中属性相同的为外键: 创建student表 create table student ( id int primary key , #主键约束 name varchar() , #唯一约束 age int NOT NULL, #非空约束 sex varchar() , address varchar() default '广西' #默认约束 ) ; 插入数据: insert into student v…
MySQL给两个表添加外键时,报错 翻译意思是:外键约束“xx”中的引用列“xx”和引用列“xx”不兼容 说明两个表关联的列数据类型不一致,比如:varchar 与 int,或者 int无符号 与 int有符号,都不行,必须要一模一样才可以,修改完成后,就可以添加外键了.…
Mysql命令添加外键 前提是有这么几个表  以mall_product 和 mall_category为例 ALTER TABLE mall_product ADD CONSTRAINT fore_pro_cate FOREIGN KEY ( pro_category_id ) REFERENCES mall_category ( category_id ); 外键记得用括号包起来 值得一提的是 constraint  fore_pro_cate  是可以省略的 有MySQL来给出外键约束名称…
在MySQL数据库创建外键时,经常会发生一些错误,这是一件很令人头疼的事.一个典型的错误就是:Can’t create table... 的错误.在很多实例中,这种错误的发生都是因为mysql一直以来都不能很好的支持的关系的问题, 更不幸的是它也并没有指明到底是哪一个问题会导致上面那种错误,下面我把导致这个可怕的150错误的常见原因列出来了,并且我以可能性的大小作了排序,已知的原因: 1.两个字段的类型或者大小不严格匹配,例如,如果一个是INT(10), 那么外键也必须设置成INT(10), 而…
在Mysql中创建外键时,经常会遇到问题而失败,这是因为Mysql中还有很多细节需要我们去留意,我自己总结并查阅资料后列出了以下几种常见原因. 1.  两个字段的类型或者大小不严格匹配.例如,如果一个是int(10),那么外键也必须设置成int(10),而不是int(11),也不能是tinyint.另外,你还必须确定两个字段是否一个为 signed,而另一个又是unsigned(即:无符号),这两字段必须严格地一致匹配,更多关于signed和unsigned的信息,请参阅:http://www.…
在Mysql中创建外键时,经常会遇到问题而失败,这是因为Mysql中还有很多细节需要我们去留意,我自己总结并查阅资料后列出了以下几种常见原因. 1.  两个字段的类型或者大小不严格匹配.例如,如果一个是int(10),那么外键也必须设置成int(10),而不是int(11),也不能是tinyint.另外,你还必须确定两个字段是否一个为 signed,而另一个又是unsigned(即:无符号),这两字段必须严格地一致匹配,更多关于signed和unsigned的信息,请参阅:http://www.…
在Mysql中创建外键时,经常会遇到问题而失败,这是因为Mysql中还有很多细节需要我们去留意,我自己总结并查阅资料后列出了以下几种常见原因. 1.  两个字段的类型或者大小不严格匹配.例如,如果一个是int(10),那么外键也必须设置成int(10),而不是int(11),也不能是tinyint.另外,你还必须确定两个字段是否一个为 signed,而另一个又是unsigned(即:无符号),这两字段必须严格地一致匹配,更多关于signed和unsigned的信息,请参阅:http://www.…
在Mysql中创建外键时,经常会遇到问题而失败,这是因为Mysql中还有很多细节需要我们去留意,我自己总结并查阅资料后列出了以下几种常见原因. 1.  两个字段的类型或者大小不严格匹配.例如,如果一个是int(10),那么外键也必须设置成int(10),而不是int(11),也不能是tinyint.另外,你还必须确定两个字段是否一个为 signed,而另一个又是unsigned(即:无符号),这两字段必须严格地一致匹配,更多关于signed和unsigned的信息,请参阅:http://www.…
在MySQL中创建外键时,经常会遇到问题而失败,这是因为Mysql中还有很多细节需要我们去留意,我自己总结并查阅资料后列出了以下几种常见原因. 1.  两个字段的类型或者大小不严格匹配.例如,如果一个是int(10),那么外键也必须设置成int(10),而不是int(11),也不能是tinyint.另外,你还必须确定两个字段是否一个为 signed,而另一个又是unsigned(即:无符号),这两字段必须严格地一致匹配,更多关于signed和unsigned的信息,请参阅:http://www.…
在MySQL中创建外键时,经常会遇到问题而失败,这是因为Mysql中还有很多细节需要我们去留意,我自己总结并查阅资料后列出了以下几种常见原因. 1.  两个字段的类型或者大小不严格匹配.例如,如果一个是int(10),那么外键也必须设置成int(10),而不是int(11),也不能是tinyint.另外,你还必须确定两个字段是否一个为 signed,而另一个又是unsigned(即:无符号),这两字段必须严格地一致匹配,更多关于signed和unsigned的信息,请参阅:http://www.…
在MySQL中创建外键时,经常会遇到问题而失败,这是因为mysql中还有很多细节需要我们去留意,我自己总结并查阅资料后列出了以下几种常见原因. 1.  两个字段的类型或者大小不严格匹配.例如,如果一个是int(10),那么外键也必须设置成int(10),而不是int(11),也不能是tinyint.另外,你还必须确定两个字段是否一个为 signed,而另一个又是unsigned(即:无符号),这两字段必须严格地一致匹配,更多关于signed和unsigned的信息,请参阅:http://www.…
简单说一下使用外键的好处 1.完整性约束 比如:用户表中有字段 用户编号(id) , 名称(username)设备表中有字段 设备编号(id) , 设备名称(devicename) 设备属于的用户编号(user_id) 把设备表中的用户编号设置成外键,引用用户表的主键. 当向设备表中输入数据时,如果输入用户编号在用户表中找不到对应的话,就会报错,从而能保证这个设备必定会属于一个存在的用户. 2.可以实现级联删除 还引用上面的例子,当一个用户不在使用该系统时,需要将用户和他的设备从数据库删除,如果…
为book表添加外键: <1>明确指定外键的名称: 语法:alter table 表名 add constraint 外键的名称 foreign key(你的外键字段名) REFERENCES 外表表名(对应的表的主键字段名); alter table book add constraint FK_BOOK foreign key(pubid) references pub_com(id) on delete restrict on update restrict; <2>不指定外…
最近很忙,碰到很多问题都忘了发上来做个记录,现在又忘了,FUCK,现在碰到一个问题, 就是mysql添加外键总是无法成功,我什么都试了,就是没注意signed和unsigned,FUCK,因为我用mysql用得比较少,所以....被我略过了,一定要记得,如果主表的字段被设为unsigned,从表的外键一定也要设为unsigned,否则,无法成功,做个记录,给自己涨点记性. Error : Cannot add foreign key constraint.... Error : Cannot a…
为已经添加好的数据表添加外键: 语法:alter table 表名 add constraint FK_ID foreign key(你的外键字段名) REFERENCES 外表表名(对应的表的主键字段名); 例: alter table tb_active add constraint FK_ID foreign key(user_id) REFERENCES tb_user(id) //FK_ID是外键的名称 /* CREATE TABLE `tb_active` (  `id` int(1…
InnoDB:支持事务处理等不加锁读取支持外键支持行锁不支持FULLTEXT类型的索引不保存表的具体行数,扫描表来计算有多少行DELETE 表时,是一行一行的删除InnoDB 把数据和索引存放在表空间里面跨平台可直接拷贝使用InnoDB中必须包含AUTO_INCREMENT类型字段的索引表格很难被压缩 MyISAM:不支持事务,回滚将造成不完全回滚,不具有原子性不支持外键不支持外键支持全文搜索保存表的具体行数,不带where时,直接返回保存的行数DELETE 表时,先drop表,然后重建表MyI…
这几天由于在赶项目进度,也就没有及时记录下自己的学习情况 ,在完成项目的这段时间里,碰到了很多问题,在解决问题的过程中学习了不少技巧. 这里就主要介绍一下在mysql数据库中为表之间建立外键时报1005 - Can't create table 'xx' (errno: 150)错误的解决方法. PS:之所以要记录下来是因为我当时被这个问题困扰了几个小时. 先奉上我解决问题的时候所参考的博文链接:http://yin123.blog.51cto.com/882581/533192/这篇博文介绍了…
数据库连接 mysql -u root -p123456 查看表 show databases 创建数据库设置编码 create table books character set utf8; 创建用户 -- 特别需要注意,在 MySQL 中,账号由两部分组成: -- 1. user -- 2. host -- 即使 user 相同,只要 host 不同,也会被认为是不同账号. -- 这样可以非常方便对来自不同 ip 地址的访问进行精细的权限控制. -- 默认情况下,创建的用户 host 为 '…
sql语句格式: · 添加外键约束:alter table 从表 add constraint 外键(形如:FK_从表_主表) foreign key (从表外键字段) references 主表(主键字段); 注意语句中的(`)全部是Esc下面那个键而非单引号!执行语句时是单引号. alter table t_book add constraint `fk` foreign key (`bookTypeId`) references t_booktype(`id`);或者在创表时直接加上 CR…
有一个东西一直在我脑海中是个很烦的东西,但是这东西不搞清楚会阻碍自己的前进.自己做项目demo永远只能用一张表... 所以今天还是学习了下外键希望能够搞明白一些... 百度上搜索外键的作用"保持数据的完整性,一致性","参照完整性"...什么的,我想信很多小伙伴都不明白到底什么意思. 首先我么要搞明白,为什么要使用外键, 比如有两张表(在最下面我会附上表的创建SQL语句,以及外键的添加和关联删除时候的语句) 表一(student1)有字段:stu_id(学号),st…
今天开始复习,在过后的几天里开始在博客上记录一下平时疏忽的知识点,温故而知新 屁话不多--直接上货 创建主表: 班级 CREATE TABLE class(cid INT PRIMARY KEY AUTO_INCREMENT, sname VARCHAR(15) NOT NULL) INSERT INTO class VALUES(NULL,'六年级一班')INSERT INTO class VALUES(NULL,'六年级二班') 第一种://1.在属性值后面直接添加(有点小问题) CREAT…
SELECT * from stu st,course co,score sc where st.sid = sc.sid and sc.cid = co.cid 如果我们要给 sid 做一个约束,即两张表中的 sid 要一一对应,所以我们要添加外键 score 关联 stu: 此时,更改score 中 sid 的值,因为此处的sid 必须与 stu 中的sid对应,stu 中没有 sid= 1008,所以这个时候更改score中的sid = 1008 ,保存的时候会提示报错 ​ ​…