【发布时间】:2018-09-01 16:12:02
【问题描述】:
我有一个如下查询:
SET @count = 0; UPDATE table SET table.id = @count:= @count + 1 WHERE table.name = "name";
如果我通过控制台或 Jetbrains Datagrip 之类的工具执行它,它可以完美运行,但是当我通过 Knex 作为原始查询推送它时,它会以 mysql ER_PARSE_ERROR 响应。
我做了一些测试,似乎 Knex 不明白 @count 是什么。
有什么想法吗?如果可以使用 Knex 方法对其进行格式化,我将非常感谢这些提示
【问题讨论】:
-
请发布您用于执行查询的 knex 代码。
-
return knex.raw('SET @count = 0; UPDATE table SET table.id = @count:= @count + 1 WHERE table.name = "name";'); -
Knex / driver 不支持一次将多个语句传递给 raw。如果你真的想这样做,你可以开始事务,先运行
trx.raw('SET @count = 0'),然后运行trx.raw('UPDATE table SET table.id = @count:= @count + 1 WHERE table.name = "name"'),最后提交。 -
以下事务根本没有通过。也没有错误输出
标签: javascript mysql node.js knex.js