创建带有外键语法错误的表

时间:2020-07-16 19:45:29

标签: mysql node.js

我正在尝试使用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)'))”

我真的不知道那里出了什么问题,希望您能帮助我。

1 个答案:

答案 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))