UnhandledPromiseRejectionWarning: RequestError: '17'

问题描述

使用 mssql(6.3.1) 和节点 (14.15.1)。

当我使用文档中显示的模板文字时,查询有效。

这是我在模板文字中的查询,它有效。 (数据库名称在这里不是变量)

await sql.query`
    INSERT
      INTO
      DB.DB.notes (updated_date,updated_user,note_description,work_order_id,created_date,created_user)
    values(
    ${normalizedDate},${username},${note_description},${wo_id},${normalizedDate},${username} )
`;

但是当我尝试用变量替换数据库时,比如说 ${DB},它抛出错误。 首先是说

RequestError:“.”附近的语法不正确

然后我得到了

RequestError: "17" 附近的语法不正确(从 14 开始并增加到 17)

这是 documentation,我试过 ConnectionPool.query('/**query**/'),但没有一个适合我。

请指出这里有什么问题。

解决方法

您在查询中使用的语法会生成参数化查询。

不可能在查询中参数化“标识符”。见Can I parameterize the table name in a prepared statement?