You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用Express.js更新SQLite表时遭遇FOREIGN KEY约束失败问题

问题:更新数据库记录触发FOREIGN KEY约束失败

尝试更新tickets表的部分记录时,反复触发FOREIGN KEY constraint failed错误,但数据库连接正常(新增记录功能可正常使用)。另外一个奇怪的现象是,批量更新两条记录时,只有第一条能成功完成更新。

后端代码如下:

module.exports = function (server, db) {
  // function to insert object to db
  function insertTickets(ticket) {
    const stmt = db.prepare(
      "UPDATE tickets SET userid=?, concertid=?, booked=? WHERE ticketid=?"
    );
    stmt.run(ticket.ticketid, ticket.userid, ticket.concertid, ticket.booked);
    console.log(stmt);
  }

  server.put("/data/tickets", (request, response) => {
    const tickets = request.body;
    console.log(request.body);

    try {
      tickets.forEach((ticket) => {
        insertTickets(ticket);
      });
      response.send("tickets inserted to database");
    } catch (e) {
      console.error(e);
    }
  });
};

待更新的数据数组:

const tickets = [
{ticketid: 1, userid: 1, concertid: 1, booked: 1},
{ticketid: 3, userid: 1, concertid: 1, booked: 1}]
问题解决

将UPDATE语句中的concertid=?字段移除,同时删掉对应的参数传递后,问题得到解决。

内容的提问来源于stack exchange,提问作者lbs91

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.31 08:56:08