Podobny błąd wystąpił podczas próby utworzenia nowego modelu, który ma odniesienie do istniejącego modelu, który został utworzony przed migracją do Rails 5.1.
Chociaż komunikat o błędzie nie był bardzo jasny, w moim przypadku okazało się, że problemem była niezgodność typu danych między kluczem podstawowym starego modelu a kluczem obcym nowego modelu (MySQL na to nie pozwala). Stało się tak, ponieważ od Rails 5.1 domyślnym typem danych wszystkich kluczy głównych i obcych jest bigint, ale w starym modelu głównym typem klucza był nadal liczba całkowita.
Rozwiązałem to, konwertując wszystkie podstawowe i obce klucze obecnych modeli na bigint, dzięki czemu mogę użyć nowych ustawień domyślnych Railsów i zapomnieć o tym.
Obejściem może być również określenie typu liczb całkowitych dla nowych kluczy obcych, tak aby były one zgodne z typem kluczy podstawowych starych modeli. Coś takiego:
class CreateUserImages < ActiveRecord::Migration[5.1]
def change
create_table :user_images do |t|
t.references :user, type: :integer, foreign_key: true
t.string :url
end
end
end