我正在尝试使用node.js中的sql查询制作3个表
前两个查询可以正常工作并创建表。 但是最后一个有语法错误,但是我不知道这是怎么回事...
connection.connect(function(err) {
if (err) throw err;
console.log("Connected!");
const queryUserMgmtTable = "CREATE TABLE if not exists user_mgmt (id INT AUTO_INCREMENT PRIMARY KEY, name VARCHAR(50), surname VARCHAR(50), email VARCHAR(50), birth_date DATETIME)";
connection.query(queryUserMgmtTable, function (err, result) {
if (err) throw err;
console.log("Table user_mgmt created");
});
const queryTaskMgmtTable = "Create table if not exists task_mgmt(id int Primary key NOT NULL, name Varchar(50), Result ENUM('created', 'in_progress', 'done') NOT NULL)";
connection.query(queryTaskMgmtTable, function (err, result) {
if (err) throw err;
console.log("Table task_mgmt created");
});
// something is wrong with the foreign key here:
const queryUser_taskTable = "Create table if not exists user_task(UserId int FOREIGN KEY REFERENCES user_mgmt(id), UserId int FOREIGN KEY REFERENCES task_mgmt(id))";
connection.query(queryUser_taskTable, function (err, result) {
if (err) throw err;
console.log("Table user_task created");
});
});
错误如下:
sqlMessage:“您的SQL语法有误;请在与MySQL服务器版本相对应的手册中查找正确的语法,以在'FOREIGN KEY REFERENCES'user_mgmt(id)',UserId int FOREIGN KEY REFERENCES'task_ '在第1行”,
sql:“如果不存在则创建表user_task(UserId int外国键参考'user_mgmt(id)',UserId int外国键参考'task_mgmt(id)'))”
我真的不知道那里出了什么问题,希望您能帮助我。
答案 0 :(得分:1)
我要说的是您有错字,因为您要创建具有2个具有相同名称的列的表,因此我将以我认为应该的形式编写它。 MYSQL外键的语法应在表定义的末尾(就像其他索引一样,但对于较新的版本可能不正确)
Create table if not exists user_task(
UserId int,
TaskId int,
FOREIGN KEY (UserId) REFERENCES user_mgmt(id),
FOREIGN KEY (TaskId) REFERENCES task_mgmt(id))