【发布时间】:2023-03-27 15:40:01
【问题描述】:
我正在尝试将 varchar 类型的现有列转换为 jsonb。该列包含诸如“black white orange”之类的字符串,并希望将其转换为 jsonb 格式,以便将其转换为 ["black", "white", "orange"]。
class AlterColorsDatatype < ActiveRecord::Migration[5.0]
def change
change_column :quotes, :colors, :jsonb, default: '[]', using: 'colors::jsonb'
end
end
我希望这会将列类型转换为 jsonb,而 using: 部分也会将现有数据转换为 jsonb。
相反,我收到此错误:
ActiveRecord::StatementInvalid: PG::InvalidTextRepresentation: 错误: json 类型的输入语法无效 详细信息:令牌“Indigo”无效。 上下文:JSON 数据,第 1 行:Indigo : ALTER TABLE "quotes" ALTER COLUMN "colors" TYPE jsonb USING colors::jsonb
我尝试了其他语法,但仍然出现相同的错误。我想我必须使用 to_json 之类的属性逐个转换整个列属性,但不知道如何解决这个错误。经过多次谷歌搜索,其他出现相同错误的人似乎没有找到解决方案。
【问题讨论】:
标签: ruby-on-rails json postgresql rails-activerecord