var name = req.body.name;
db.any('alter table "houseList" add $1 text', [name])
我尝试使用 nodejs 中的上述代码在 heroku 上向数据库主机添加新列,但我一直收到此错误:
错误:“'haha'”或附近的语法错误
'哈哈'是名字内部的价值,任何人都知道出了什么问题?
答案 0 :(得分:1)
您正在使用无效的转义作为列名,作为常规字符串变量。
任何架构/表/列名称都称为SQL名称,必须使用""
进行转义。
在pg-promise内,这意味着您必须使用:name
支持,~
:或db.any('alter table "houseList" add $1:name text', [name])
修饰符。
db.any('alter table "houseList" add $1~ text', [name])
或
:raw
另外,如果您确定只使用简单名称,即没有空格,没有大写字母,那么您可以直接使用名称,未转义,这意味着使用SQL Names,通过修饰符{{1} }或^
。但一般情况下,不推荐使用,即建议将名称转义为更安全;)