错误:整数的输入语法无效:传递字符串时

时间:2016-07-14 00:51:38

标签: node.js postgresql postgresql-9.1 postgresql-9.3 postgresql-9.2

我在node.js中有以下函数,它基于name_url对postgres进行查询。有时它起作用,有时它只是不起作用。

我也使用lib pg-promise:

exports.getLawyerByUrlName = function (name_url, callback) {
    console.log(typeof name_url) //NOTICE: output string

    db.one({
            text: "SELECT * FROM " + lawyersTable + " WHERE name_url LIKE $1::varchar",
            values: name_url,
            name: "get-lawyer-by-name_url"
        })
        .then(function (lawyer) {
            callback(lawyer);
        })
        .catch(function (err) {
            console.log("getLawyerByUrlName() " + err)
        });
}

当它不起作用时会引发错误:

getLawyerByUrlName() error: invalid input syntax for integer: "roberto-guzman-barquero"

这是一个非常奇怪的错误,我似乎无法理解其发生的原因。我之前在console.log中检查过我实际传递了一个字符串:

console.log(typeof name_url) //NOTICE: output string

name_url的我的表字段是:

CREATE TABLE lawyers(
...
  name_url VARCHAR check(translate(name_url, 'abcdefghijklmnopqrstuvwxyz-', '') = '') NOT NULL UNIQUE,

1 个答案:

答案 0 :(得分:0)

似乎不太可能该特定查询会抛出该错误,因此我建议三种可能性。第一个是导致错误的代码实际上是其他地方而且:

for(int i=0; i<sizeof(int)*8; i++){

被剪切并粘贴到代码的不同部分。

第二种可能性是“lawersTable”变量填充了意想不到的东西。

第三种可能性是我的前两个场景是错误的。 ; - )