【问题标题】:Storing Array values to integer将数组值存储为整数
【发布时间】:2017-05-04 15:18:24
【问题描述】:

试图以整数存储数组值。这是我的代码。这是错的吗?

db.query('INSERT INTO users(name,student_id) VALUES($1,ARRAY["$2","$3"]::INTEGER[]) RETURNING *', [data.name, data.id])
.then(function(user) { })
.catch(function(err) {
    return callback(null, err);
})

但我收到此错误

{
 "name": "error",
 "length": 102,
 "severity": "ERROR",
 "code": "42703",
 "position": "70",
 "file": "parse_relation.c",
 "line": "3090",
 "routine": "errorMissingColumn"
}

【问题讨论】:

    标签: node.js postgresql


    【解决方案1】:

    42703 表示undefined_column - 发生这种情况,因为您在"$2","$3" 周围使用双引号,并且双引号正在标识数据库对象(在查询的这一部分 - 列中)。将它们删除为:

    db.query('INSERT INTO users(name,student_id) VALUES($1,ARRAY[$2,$3]::INTEGER[]) RETURNING *', [data.name, data.id])
    .then(function(user) { })
    .catch(function(err) {
        return callback(null, err);
    })
    

    【讨论】:

    • 是的,我删除了双引号,我变得像这样You will need to rewrite or cast the expression
    • 这意味着 ether $1 具有不同的数据类型,然后“name”列或“student_id”列不是 integer[] 数据类型。但这是完全不同的问题
    • name 列是 character ,但 student_id 是整数。我需要将多个 id 存储到 student_id 列,所以您对数组字段的外键约束有任何想法吗?
    • 你不能把 integer[] 变成整数。这与 FK 无关
    • 好的,实际上我想将多个 id 存储到 users 表的 student_id 列。但它具有由 int 类型声明的部门表 _id 的引用,所以如果您有任何想法,请建议我
    猜你喜欢
    • 2014-06-21
    • 1970-01-01
    • 2016-05-23
    • 1970-01-01
    • 2015-06-13
    • 2016-04-28
    • 1970-01-01
    相关资源
    最近更新 更多