Синтаксис для определения внешних ключей очень прост, но для всех, кто с этим сталкивается, тот факт, что внешние ключи должны быть «одного типа», применим даже к сопоставлению, а не только к типу данных и длине и подписанию битов.
Не то, чтобы вы смешивали параметры сортировки в вашей модели (не так ли?), Но если вы это сделаете, убедитесь, что поля первичного и внешнего ключей имеют одинаковый тип сопоставления в phpmyadmin или Heidi SQL или в любом другом используемом вами.
Надеюсь, это сэкономит вам четыре часа проб и ошибок, которые мне стоили.