昨天晚上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_id和book中的id不一样,--#
估计也我这样的初学者能犯这样的错误吧。
还有,rails中,好像对于外键不是强求的,他会按照name来比配。
比如,你只要在book_comments中有book_id,rails就会自己比配。
Model/book.rb:
ruby 代码
- Has_many :book_comments
-
- Model/book_comment.rb
- Belongs_to :book
就可以通过book.bookComment.post来取书的评论的内容了。
It’s so easy….isnt it?
如果你对上面命名有点混乱,请参考相应的问题,理解一下,配置优于规范原则。