1
在我的Rails 5.0.5应用程序中,我需要将json
列转换为string, array: true
。PostgreSQL不能将类型JSON转换为字符变化[]
我json
列中的值是这样的:
[ "200px-RR5219-0015R.png", "2017_03_25_2235.doc", "137555.jpg" ]
我试过这种迁移:
class ChangeTaskAttachmentsTypeToString < ActiveRecord::Migration[5.0]
def change
change_column :tasks, :attachments, :string, array: true
end
end
,并得到这个错误:
ActiveRecord::StatementInvalid: PG::DatatypeMismatch: ERROR: column "attachments" cannot be cast automatically to type character varying[]
HINT: You might need to specify "USING attachments::character varying[]".
: ALTER TABLE "tasks" ALTER COLUMN "attachments" TYPE character varying[]
然后我编辑的迁移:
class ChangeTaskAttachmentsTypeToString < ActiveRecord::Migration[5.0]
def change
change_column :tasks, :attachments, 'character varying[] USING attachments::character varying[]'
end
end
终于拿到了这个错误:
PG::CannotCoerce: ERROR: cannot cast type json to character varying[]
: ALTER TABLE "tasks" ALTER COLUMN "attachments" TYPE character varying[] USING attachments::character varying[]
我怎样才能做到这一点的迁移?