rails中用migrate建表的时候,建立外键出错。ft

本文分享了一次解决MySQL数据库外键约束问题的经历,重点介绍了因数据类型不匹配导致的错误150,并通过调整字段类型成功建立了book与comment_book表之间的外键关联。
昨天晚上rp严重走低,被mysql的一个问题搞到很晚,还使我把数据库重新建了一下。
问题是,我想把book和comment_book表关联起来,就是建外键,但是建不起来。报150错误。
早上起来继续搞,查看了manul,突然发现这样的一句话。
Corresponding columns in the foreign key and the referenced key must have simila internal datatypes inside InnoDB so that they can be compared without a type conversion. The size and the signedness of integer types has to be the same……
….similarly, if an ALTER TABLE fails and it refer to errno 150, that means a foeign key definition would be incorrectly formed for the altered table….
 

大意就是,相互关联的域的类型的类型需要相同,如果是integer,大小要相同,如是string ,长度要相同。。

而我,就是因为book_comment 中的book_idbook中的id不一样,--#

 

估计也我这样的初学者能犯这样的错误吧。

还有,rails中,好像对于外键不是强求的,他会按照name来比配。

比如,你只要在book_comments中有book_id,rails就会自己比配。

Model/book.rb

ruby 代码
  1. Has_many    :book_comments  
  2.   
  3. Model/book_comment.rb   
  4. Belongs_to  :book  
 

就可以通过book.bookComment.post来取书的评论的内容了。

It’s so easy….isnt it?

如果你对上面命名有点混乱,请参考相应的问题,理解一下,配置优于规范原则。

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值