Node.js 格式不正确的数组文字:";1“;更新postgres sequelize迁移脚本中的列时出错
我正在尝试更新表“myTable”的列属性“type” 我知道Postgres支持类型Node.js 格式不正确的数组文字:";1“;更新postgres sequelize迁移脚本中的列时出错,node.js,postgresql,types,sequelize.js,jsonb,Node.js,Postgresql,Types,Sequelize.js,Jsonb,我正在尝试更新表“myTable”的列属性“type” 我知道Postgres支持类型Sequelize.ARRAY(Sequelize.JSONB),所以我想试试 因此,我更新了到ff的迁移 首先,我尝试了将列属性“type”更新为 return Promise.all([ queryInterface.changeColumn("MyTable", "column1", { type: Sequelize.ARRAY(Sequelize.S
Sequelize.ARRAY(Sequelize.JSONB)
,所以我想试试
因此,我更新了到ff的迁移
首先,我尝试了将列属性“type”更新为
return Promise.all([
queryInterface.changeColumn("MyTable", "column1", {
type: Sequelize.ARRAY(Sequelize.STRING)
})
])
但它给出了错误:
所以我尝试了不同的方法:
return Promise.all([
queryInterface.changeColumn("MyTable", "column1", {
type: Sequelize.ARRAY(Sequelize.JSONB) + 'USING CAST("data" as ' + Sequelize.ARRAY(Sequelize.JSONB) + ')'
})
])
但它给出了错误:
我只是想更新我专栏的“类型”,但这让我很头疼
Postgres和Sequelize版本为:
"pg": "^8.6.0",
"sequelize": "^6.6.2",
关于如何修复这个问题,有什么想法吗?第一个错误,因为没有注册从神秘的、未声明的前列类型到
jsonb[]
(数组jsonb
)的强制转换。(我假设varchar
或text
?)
第二个错误是因为列中的所有现有值都必须是合法数组文本才能转换为jsonb[]
。有效示例:
{"{\"foo\": \"bar\"}","{\"baz\": \"bam\"}"}
jsonb[]
对于数据类型来说是一个非常奇怪的选择。你确定你不想要纯文本数组(
text[]
)还是只想要jsonb
包含JSON数组?我怀疑“pg”:“^8.6.0”
是Postgres版本,因为没有8.6 Postgres。我猜这就是驱动程序版本。请更新问题以包含正确的Postgres版本。还要添加问题:1)列的实际当前类型是什么?2) 列中当前数据的示例。
"pg": "^8.6.0",
"sequelize": "^6.6.2",
{"{\"foo\": \"bar\"}","{\"baz\": \"bam\"}"}