1
私はRailsの5.0.2での既存の列の移行を書き込もうとしました:Railsのstringからjsonbへのchange_columnの方法は?
def up
change_column(:sales_deals, :lost_reason, 'jsonb USING CAST(lost_reason AS jsonb)')
end
def down
change_column(:sales_deals, :lost_reason, 'string USING CAST(lost_reason AS string)')
end
しかし、jsonbするCAST
既存の文字列に失敗しました:
PG::InvalidTextRepresentation: ERROR: invalid input syntax for type json
DETAIL: Token "Non" is invalid.
CONTEXT: JSON data, line 1: Non...
: ALTER TABLE "sales_deals" ALTER COLUMN "lost_reason" TYPE jsonb USING CAST(lost_reason AS jsonb)
私の推測があるあります2つの問題:
1)トークン "Non"がハイフン付き文字列の先頭であるため、値の型を指定する必要があります。 "Non-c賛成する "。
2)私は、既存の値のために、デフォルトキーを定義する必要があります。
誰でも助けてください。ありがとう!あなたは次のように試してみてください
あなたのソリューションは、いくつかのために働いたが、最後に移行がキャンセルされ、このエラーました: '' 'PG :: CannotCoerce:ERROR: LINE 1 jsonbするタイプの数値をキャストすることはできません:...のEALの」ALTER COLUMNを"lost_reason" TYPE jsonb USAST CAST(値... ^ :ALTER TABLE "sales_deals" ALTER COLUMN "lost_reason"タイプjsonb CAST(値AS jsonb) '' ' – ogirginc
を使用すると、" using: notes :: JSON '"つまり、最初の行の" using "領域を置き換えてから試してみてください –