gpt4 book ai didi

javascript - 当我尝试在 Heroku 上使用 POSTGRESQL 更新数据库时,出现 22001 错误

转载 作者:行者123 更新时间:2023-12-03 03:54:20 24 4
gpt4 key购买 nike

我正在开发一个在 Heroku 上使用 KnexJS 和 PGSQL 的项目。我的问题是,当我更新签名_url 字段(文本)时,我收到 PGSQL 22001 错误(详细信息如下所列)。更新到signature_url字段中的是由.toDataUrl() JavaScript方法创建的字符串。此方法返回一个长度为 16,158 个字符的字符串。在开发中使用 SQLite3 时,这一切似乎工作正常,但当我尝试通过 Heroku 上的 PGSQL 进行更新时,这一切都崩溃了。

这是我的迁移:

exports.up = function(knex, Promise) {
return knex.schema.createTable('contracts', function (table) {
table.increments('id')
table.integer('owner_id')
table.integer('signee_id')
table.string('contract_header')
table.text('contract_desc')
table.text('signature_url')
table.string('date_signed')
table.boolean('isSigned')
})
};

exports.down = function(knex, Promise) {
return knex.schema.dropTable('contracts')
};

这是我的原始种子:

exports.seed = function(knex, Promise) {
// Deletes ALL existing entries
return knex('contracts').del()
.then(function () {
// Inserts seed entries
return knex('contracts').insert([
{owner_id: 1, signee_id: 2, contract_header: 'Rugby Coaching Position', contract_desc: 'Curabitur non nulla sit amet nisl tempus convallis quis ac lectus. Praesent sapien massa, convallis a pellentesque nec, egestas non nisi. Donec sollicitudin molestie malesuada.', signature_url: '', date_signed: '', isSigned: false},
{owner_id: 1, signee_id: 2, contract_header: 'Arts Perfomance', contract_desc: 'Curabitur non nulla sit amet nisl tempus convallis quis ac lectus. Praesent sapien massa, convallis a pellentesque nec, egestas non nisi. Donec sollicitudin molestie malesuada.', signature_url: '', date_signed: '', isSigned: false},
{owner_id: 2, signee_id: 1, contract_header: 'Field Trip', contract_desc: 'Curabitur non nulla sit amet nisl tempus convallis quis ac lectus. Praesent sapien massa, convallis a pellentesque nec, egestas non nisi. Donec sollicitudin molestie malesuada.', signature_url: '', date_signed: '', isSigned: false}
]);
});
};

这是在开发工具上检查网络时返回的对象。

code:"22001"
file:"varchar.c"
length:99
line:"624"
name:"error"
routine:"varchar"
severity:"ERROR"

db.js

function signContract (id, signatureUrl) {
return knex('contracts').where('id', id)
.update({ signature_url: signatureUrl })
}

knexfile.js

module.exports = {

development: {
client: 'sqlite3',
connection: {
filename: './dev.sqlite3'
}
},

staging: {
client: 'postgresql',
connection: {
database: 'my_db',
user: 'username',
password: 'password'
},
pool: {
min: 2,
max: 10
},
migrations: {
tableName: 'knex_migrations'
}
},

test: {
client: 'sqlite3',
connection: {
filename: './dev.sqlite3'
}
},

production: {
client: 'postgresql',
connection: process.env.DATABASE_URL,
pool: {
min: 2,
max: 10
},
migrations: {
tableName: 'knex_migrations'
}
}

};

最佳答案

您正在尝试将数据插入 varchar 列,但字符串的长度超出了该列的长度。

您可以插入较短的字符串或使用ALTER TABLE 来增加varchar 列的长度。

关于javascript - 当我尝试在 Heroku 上使用 POSTGRESQL 更新数据库时,出现 22001 错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45022916/

24 4 0
文章推荐: javascript - 无法读取未定义的属性 'rejected' | ReactJS
文章推荐: javascript - 将 md-switch 转换为 md-select
文章推荐: javascript - 正确附加具有正确索引的多个元素
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com