【发布时间】:2016-08-10 11:30:33
【问题描述】:
我有一个简单的查询,打算在我的 postgresql 9.5 数据库的表中插入一行:
client.query('INSERT INTO "GRIDs" (idname, status, playerid, playerready) VALUES (\'' + gameRoomID + '\', 0, ARRAY[\'\',\'\',\'\',\'\'], ARRAY[0,0,0,0]);', function(err, data) {
if(err) {
throw new Error('Error inserting game room ID ' + gameRoomID);
};
});
但是,由于未知原因,字符串数组 (ARRAY[\'\',\'\',\'\',\'\']) 会导致错误,因为如果我将其从查询中删除相应的 playerid 列,查询工作正常。我尝试了以下变体,结果都相同:
ARRAY["\'\'","\'\'","\'\'","\'\'"] (用双引号将每个值括起来)
ARRAY["","","",""](只用双引号)
ARRAY[,,,](只是空的)
以及花括号的各种类似符号,但即使是编号数组,这些符号似乎也很烦人,所以我倾向于避免使用这些符号。
我做错了什么?
【问题讨论】:
-
错误信息是什么,
playerid列的数据类型是什么? -
手动查询转义始终是灾难的根源。您应该依赖库中的自动查询格式。查看pg-promise,它可以自动格式化任何东西(包括混合内容)的数组。
标签: node.js postgresql