Я работаю над приложением Rails, где мне нужно добавить некоторые внешние ключи для существующих столбцов из миграций Rails.
class AddFkRefsToPackages < ActiveRecord::Migration[5.2]
def change
add_foreign_key :packages, :orders, name: :index_packages_on_order_id
add_foreign_key :packages, :locations, name: :index_packages_on_location_id
end
end
При выполнении вышеуказанной миграции я получаю следующую ошибку:
StandardError: Произошла ошибка, все последующие миграции отменены:
Mysql2:: Ошибка: невозможно добавить или обновить дочернюю строку: ограничение внешнего ключа не выполняется (myproject_development
. #sql-1_5a
, CONSTRAINT index_packages_on_location_id
FOREIGN KEY (quote_route_id
) ССЫЛКИ quote_routes
(id
)): ALTER TABLEquote_legs
ADD CONSTRAINT index_quote_legs_on_quote_route_id
ИНОСТРАННЫЙ КЛЮЧ (location_id
) ССЫЛКИ locations
(id
)
Через консоль Rails мы заметили, что в родительском (местоположениях) нет идентификаторов, ноупоминается в child (packages) как parent_id (location_id).
Мы пробовали это:
execute <<-SQL
SET FOREIGN_KEY_CHECKS=0;
Помимо вышесказанного, можем ли мы добавить CASCADE_DELETE или есть способ очистки / пропускаэти записи?