javascript - 使用 LAST_INSERT_ID 时出现 ER_NO_REFERENCED_ROW_2

标签 javascript mysql express vuejs2 last-insert-id

我是vuejs和express的新手,我一直想知道如何从Guest表中获取GuestID到外键GuestID code> 在我的预订 表中。

app.post('/create',(req,res,next)=>{
    var mysql = require('mysql')
    var connection = mysql.createConnection(config)
    var sql = "INSERT INTO `guest` SET ?"
    connection.query(sql,req.body,(err,results,fields)=>{
        connection.end()
        if(err){
            next(err)
        }else{
            res.json([true,results.insertId])
        }
    })
})


app.post('/book',(req,res,next)=>{
    var mysql = require('mysql')
    var connection = mysql.createConnection(config)
    var sql = "INSERT INTO `reservation` SET `GuestID`=LAST_INSERT_ID(),`RoomID`=?,`AdultCount`=?,`KidCount`=?,`CheckInDate`=?,`CheckOutDate`=?"
    var RoomID = req.body.RoomID;
    var AdultCount = req.body.AdultCount;
    var KidCount = req.body.KidCount;
    var CheckInDate = req.body.CheckInDate;
    var CheckOutDate = req.body.CheckOutDate;
    connection.query(sql,[RoomID,AdultCount,KidCount,CheckInDate,CheckOutDate],(err,results,fields)=>{
        connection.end()
        if(err){
            next(err)
        }else{
            res.json([true,results])
        }
    })
})

然后我收到此错误:

Error: ER_NO_REFERENCED_ROW_2: Cannot add or update a child row: a foreign key constraint fails (booking.reservation, CONSTRAINT reservation_ibfk_1 FOREIGN KEY (GuestID) REFERENCES guest (GuestID))

最佳答案

感谢@Akina,我尝试在一个连接上搜索查询。我看到一篇文章,您可以使用连接中的 multipleStatements 将多个语句放入 Express 中,并使我的代码如下所示:

app.post('/book',(req,res,next)=>{
    var mysql = require('mysql')
    var connection = mysql.createConnection(config)
    var sql = "INSERT INTO `guest` SET `FirstName`=?,`LastName`=?,`Email`=?,`ContactNumber`=?;SET @GuestID:=LAST_INSERT_ID();INSERT INTO `reservation` SET `GuestID`=@GuestID,`RoomID`=?,`AdultCount`=?,`KidCount`=?,`CheckInDate`=?,`CheckOutDate`=?"
    var FirstName = req.body.FirstName;
    var LastName = req.body.LastName;
    var Email = req.body.Email;
    var ContactNumber = req.body.ContactNumber;
    var RoomID = req.body.RoomID;
    var AdultCount = req.body.AdultCount;
    var KidCount = req.body.KidCount;
    var CheckInDate = req.body.CheckInDate;
    var CheckOutDate = req.body.CheckOutDate;
    connection.query(sql,[FirstName,LastName,Email,ContactNumber,RoomID,AdultCount,KidCount,CheckInDate,CheckOutDate],(err,results,fields)=>{
        connection.end()
        if(err){
            next(err)
        }else{
            res.json([true,results])
        }
    })
})

我的意思是它很长,但它有效,哈哈,但是如果你们有比这更有效的东西,请告诉我

关于javascript - 使用 LAST_INSERT_ID 时出现 ER_NO_REFERENCED_ROW_2,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59980106/

相关文章:

javascript - AngularJS DropDown 禁用文档滚动

MySQL select string with\in it - 字符串是 IN () 的一部分

php - 在 MYSQL 中使用 SELECT MAX(id) 而不是在 PHP 中使用 mysql_insert_id() 有多糟糕?

javascript - 带有 express 和 websocket 的 Node.js 在 WebSocket 握手期间给出错误 : Unexpected response code: 200

javascript - jquery ajax异步请求错误

javascript - 如何在struts2应用中集成谷歌地图

javascript - 单击下一个日期选择器时关闭日期选择器AngularJS

php - 我可以在 PHP 中混合使用 MySQL API 吗?

node.js - block Node js路由

javascript - Express.js res.render() 和 res.redirect()