У меня есть следующие таблицы:
- Маршрут (идентификатор, имя) с идентификатором первичного ключа
- Стоп (ID, Имя) с ID первичного ключа
- Отображение (Route_ID, Stop_ID)
Идентификаторы в Route и Stop имеют тип BIGINT (20) в моей Mysql-DB. Миграция не удалась, потому что с помощью этого:
class CreateMappings < ActiveRecord::Migration
def change
create_table :mappings do |t|
t.references :route, index: true, foreign_key: true
t.references :stop, index: true, foreign_key: true
t.timestamps null: false
end
end
end
Создает таблицу Mappings с route_id и stop_id, но с типом данных INT (11). Это несовместимо с BIGINT (20). Как я могу это исправить? Любые идеи? Не удается создать внешние ключи.
Сообщения об ошибках
Это часть вывода rake db:migrate --trace
:
** Invoke db: migrate (first_time) ** Invoke environment (first_time) ** Execute environment ** Invoke db: load_config (first_time) ** Execute db: load_config ** Execute db: migrate == 20151227194101 CreateMappings: migrating === ================================ - create_table (: mappings) rake прервано! StandardError: Произошла ошибка, все последующие миграции отменены:
Mysql2 :: Ошибка: невозможно добавить ограничение внешнего ключа: ALTER TABLE
mappings
ADD CONSTRAINTfk_rails_1b9f715271
FOREIGN KEY (route_id
) ССЫЛКИroutes
(id
)
Когда я пытаюсь выполнить приведенный выше оператор SQL (ALTER TABLE _8 _...) с помощью MySql-Client, я получаю следующую ошибку:
Failed to add the foreign key constaint. MIssing index for constraint 'fk_rails_1b9f715271' in the referenced table 'routes'.