Я разрабатывает версию патча, который с помощью создания или обновления существующей таблицы с помощью сырой sql.When я выбежала эти 3 запросы, как нижеудалось установить внешний ключ MySQL
первый запрос Success
CREATE TABLE ts_overtime_scheme_histories(id int AUTO_INCREMENT NOT NULL,
name VARCHAR(255),
workdays INT,
break_payable VARCHAR(25),
roundable VARCHAR(25),
round_rule VARCHAR(10), round_minute INT,
type enum('ratio','fixed') DEFAULT 'ratio',
overtime_request_id INT UNSIGNED NOT NULL, PRIMARY KEY(id),
FOREIGN KEY(overtime_request_id) REFERENCES ts_overtime_requests(id));
Второй успешный запрос
CREATE TABLE ts_overtime_scheme_details_histories(id INT AUTO_INCREMENT NOT NULL,
hour FLOAT,
ratio FLOAT,
overtime_scheme_history_id INT(11) UNSIGNED NOT NULL,
PRIMARY KEY(id));
И теперь я пытаюсь подключить вторую таблицу к первой таблице. Таким образом, первая таблица имеет внешний ключ во второй таблице. Поэтому я выполнил третий запрос
ALTER TABLE ts_overtime_scheme_details_histories ADD FOREIGN KEY (`overtime_scheme_history_id`) REFERENCES `ts_overtime_scheme_histories` (`id`) ON DELETE CASCADE;
Но как-то это не удалось. Отчет об ошибке ниже
General error: 1005 Can't create table `db_test`.`#sql-ea4_28` (errno: 150 "Foreign key constraint is incorrectly formed") (SQL: ALTER TABLE ts_overtime_scheme_details_histories
ADD FOREIGN KEY (`overtime_scheme_history_id`) REFERENCES `ts_overtime_scheme_histories` (`id`)
ON DELETE CASCADE;)
Может ли кто-нибудь помочь мне найти то, что я пропустил? Сначала я подозреваю, что длина данных первичного и внешнего ключей не похожа, но когда я дважды проверял, это правильно.
Редактировать: ts_overtime_requests был создан с использованием рамки laravel.