gpt4 book ai didi

javascript - 无法弄清楚为什么我在创建数据库表时出错

转载 作者:行者123 更新时间:2023-12-02 23:55:01 24 4
gpt4 key购买 nike

我一生都无法弄清楚为什么我的创建表代码无法正常工作。我正在运行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:无法创建表testALARM(errno:150“外键约束格式不正确”)

关于如何解决这个问题有什么想法吗?感谢您抽出时间。

最佳答案

最后一个查询应该是,您正在引用 FILE 作为外键而不是 EVENT

  "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)"

关于javascript - 无法弄清楚为什么我在创建数据库表时出错,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55437247/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com