NodeJs 和 MySql:当表 id 为 UUID 时,results.insertId 始终为 0

Edd*_*ddy 3 mysql uuid node.js

我正在MySql使用包将记录插入到表中,然后尝试通过询问来NodeJs mysql获取插入的记录。但是虽然记录插入正确,但返回的id始终为零。idresults.insertId

问题可能是该表Primary Key是一个UUID (BINARY 16). 如果我将其更改为INT (11)返回insertId正确的值。那么有办法解决吗?insertId如果是的话我可以得到吗UUID

这是我的代码:

pool.query('insert into my_table (id, title) '
                    + ' values(uuid(), ?', [ title ],
  function (error, results, fields) {
    if (error) {
      console.log(error);
      reject(error);
    } else {
      resolve(results);
    }
 }
Run Code Online (Sandbox Code Playgroud)

完整results对象:

OkPacket {
  fieldCount: 0,
  affectedRows: 1,
  insertId: 0,
  serverStatus: 2,
  warningCount: 0,
  message: '',
  protocol41: true,
  changedRows: 0 }
Run Code Online (Sandbox Code Playgroud)

Der*_*ğlu 5

您的 id 列不是 AUTO_INCRMENT 列。这就是为什么你不能使用insertId

您可以考虑生成uuid代码并将其作为参数插入到查询中。

或执行 2 个单独的查询:

SELECT UUID()
INSERT INTO my_table (id, title) VALUES ($uuid, ?)
Run Code Online (Sandbox Code Playgroud)