pg-promise 创建列错误
pg-promise creating column error
var name = req.body.name;
db.any('alter table "houseList" add text', [name])
我尝试使用 nodejs 中的上述代码向 heroku 上的数据库主机添加一个新列,但我不断收到此错误:
error: syntax error at or near "'haha'"
'haha' 是 name 里面的值,谁知道哪里出了问题?
您对列名使用了无效的转义,作为常规字符串变量。
任何 schema/table/column 名称都称为 SQL 名称,必须使用 ""
.
进行转义
在 pg-promise that means you must use its SQL Names 支持范围内,带有 :name
: 或 ~
修饰符。
db.any('alter table "houseList" add :name text', [name])
或
db.any('alter table "houseList" add ~ text', [name])
此外,如果您确定您只使用简单的名称,即没有空格,没有大写字母,那么您可以直接使用该名称,不转义,这意味着使用 Raw Text,通过修饰符 :raw
或 ^
。但一般来说,不推荐这样做,即转义名称更安全 ;)
var name = req.body.name;
db.any('alter table "houseList" add text', [name])
我尝试使用 nodejs 中的上述代码向 heroku 上的数据库主机添加一个新列,但我不断收到此错误:
error: syntax error at or near "'haha'"
'haha' 是 name 里面的值,谁知道哪里出了问题?
您对列名使用了无效的转义,作为常规字符串变量。
任何 schema/table/column 名称都称为 SQL 名称,必须使用 ""
.
在 pg-promise that means you must use its SQL Names 支持范围内,带有 :name
: 或 ~
修饰符。
db.any('alter table "houseList" add :name text', [name])
或
db.any('alter table "houseList" add ~ text', [name])
此外,如果您确定您只使用简单的名称,即没有空格,没有大写字母,那么您可以直接使用该名称,不转义,这意味着使用 Raw Text,通过修饰符 :raw
或 ^
。但一般来说,不推荐这样做,即转义名称更安全 ;)