gpt4 book ai didi

mysql - 无法在 knex node express 中将 multipleStatements 设置为 true

转载 作者:行者123 更新时间:2023-11-29 07:24:07 25 4
gpt4 key购买 nike

我继承了一个用于 RESTFUL api 的 node.js 应用程序,它使用 knex 池连接到 mysql。我需要在单个函数(语句)中执行多个查询,据我所知,为此我需要在 knex 池设置中将 multipleStatemnt 设置为 truu。我已经这样做了:

    const connection = (user, password) =>
knex({
client: "mysql",
connection: {
multipleStatements: true,
host: process.env.MYSQL_IP,
port: process.env.MYSQL_PORT,
user,
password,
database: "",
dateStrings: true,
}
});

但是,这似乎没有得到应用,我无法在单个查询中执行多个语句(根据 mysql 池中的文档):

var qString = 'SELECT ?;SELECT ?'
self._client.query(qString, [1,5], function (err, result) {

如果我检查我的客户端,我会看到 multipleStatements 仍然被设置为 false:

    Pool {
_events: {},
_eventsCount: 0,
_maxListeners: undefined,
config:
PoolConfig {
acquireTimeout: 10000,
connectionConfig:
ConnectionConfig {
host: 'xxx.xxx.xxx.xxx',
port: 'xxxx',
localAddress: undefined,
socketPath: undefined,
user: 'xxxxxxx',
password: 'xxxxxxx',
database: 'xxxxxxxxx',
connectTimeout: 10000,
insecureAuth: false,
supportBigNumbers: false,
bigNumberStrings: false,
dateStrings: false,
debug: undefined,
trace: true,
stringifyObjects: false,
timezone: 'local',
flags: '',
queryFormat: undefined,
pool: [Circular],
ssl: false,
multipleStatements: false,
typeCast: true,
maxPacketSize: 0,
charsetNumber: 33,
clientFlags: 455631 },
waitForConnections: true,

所以我的问题是 - - 是否还有其他任何地方我可以更改此设置(快速 session 或???)或者是否有人有一些想法?

最佳答案

我在knex doc 中找不到multipleStatements: true 相关设置|

但根据这个issue

也许您可以手动将多个语句连接到一个查询字符串中,例如:

const queries = [
knex.table("game0.stats").update(updateCurrency),
knex.table("game1.stats").update(updateCurrency),
knex.table("game2.stats").update(updateCurrency),
];
const multiQuery = queries.join(";");
console.log(multiQuery);
return knex.raw(multiQuery)
.then((result) => {
})
.catch((error) => {
});

此外,您可以在执行查询之前包装一个函数:

function executeMultiStatements(queries) {
// do some checks
// avoid sql injection
// ...
const multiQuery = queries.join(';')
return knex.raw(multiQuery);
}

关于mysql - 无法在 knex node express 中将 multipleStatements 设置为 true,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54764584/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com