Я не могу на всю жизнь понять, почему мой код создания таблицы не работает должным образом. Я использую Express / JS / SQL для создания таблиц и предоставления внешних ключей ограничения, но один из них дает мне ошибку с ключами
Я не могу изменить порядок, поскольку для внешних ключей нужны таблицы в таком порядке, он работает совершенно нормально. Если я удалю внешний ключ ALARM, но мне нужно его включить. Любые предложения будут действительно полезны.
У меня есть этот код, и при его создании таблица аварийных сигналов не создается.
let records = [
"create table IF NOT EXISTS FILE (cal_id INT AUTO_INCREMENT PRIMARY KEY, file_name VARCHAR(60) NOT NULL, version INT NOT NULL, prod_id VARCHAR(256) NOT NULL)",
"create table IF NOT EXISTS EVENT (event_id INT AUTO_INCREMENT PRIMARY KEY, summary VARCHAR(1024), start_time DATETIME NOT NULL, location VARCHAR(60), organizer VARCHAR(256), cal_file INT NOT NULL, CONSTRAINT FOREIGN KEY(cal_file) REFERENCES FILE(cal_id) ON DELETE CASCADE)",
"create table IF NOT EXISTS ALARM (alarm_id INT AUTO_INCREMENT PRIMARY KEY, action VARCHAR(256) NOT NULL, `trigger` VARCHAR(256) NOT NULL, event INT NOT NULL, CONSTRAINT FOREIGN KEY(event) REFERENCES FILE(event_id) ON DELETE CASCADE)"
];
Я называю это так
for (let rec of records) {
db.query(rec, function (err) {
if (err) console.log("Something went wrong. "+err);
});
}
Я получаю ошибку
Что-то пошло не так. Ошибка: ER_CANT_CREATE_TABLE: Невозможно создать таблицу test
. ALARM
(номер ошибки: 150 «Ограничение внешнего ключа сформировано неправильно»)
Есть идеи, как это исправить? Спасибо за ваше время.