我们正在将Rails应用程序从MySql迁移到Postgres。通常,应用程序正在加载正常。
如果我尝试使用update_column
更新记录,则会出现以下问题:
irb> parent.id
=> #<UUID:0x3fd2c1a61cf0 UUID:F2CABB99AAB84BEB8C64AD23AAC775C0>
irb> child.update_column(:parent_id, parent.id)
PG::InvalidTextRepresentation - ERROR: invalid input syntax for type uuid: "--- !ruby/object:UUIDTools::UUID
time_low: 856850911
time_mid: 49931
time_hi_and_version: 17649
clock_seq_hi_and_reserved: 165
clock_seq_low: 247
nodes:
- 179
- 116
- 149
- 190
- 190
- 157
"
LINE 1: UPDATE "children" SET "parent_id" = '--- !ruby/ob...
^
它实际上是在生成的SQL中转储UUID YAML而不是UUID的字符串表示形式。
但是,如果我分配属性然后保存它,它可以正常工作:
irb> child.parent_id = parent.id
irb> parent.save
=> true
由于我们已经在应用程序的许多位置使用了update_column
,因此我们无法将其更改为分配和保存。
rails 4.2.7.1
pg 0.21.0
activeuuid 0.6.1