为什么会出现此错误?
const response = await pool.query(`SELECT * FROM $1`, [table]);
我的测试用例中[table]
的值为["person"]
。但它始终存在错误:
error: syntax error at or near "$1"
答案 0 :(得分:1)
您不能为SQL名称/标识符使用变量,至少不能使用基本驱动程序。
以下是pg-promise:
的示例const response = await db.query('SELECT * FROM $1:name', table);
或:
const response = await db.query('SELECT * FROM $1:name', [table]);
或:
const response = await db.query('SELECT * FROM ${table:name}', {table});
根据SQL Names语法和您使用的方法类型,还有更多可能的变体。