Rails PG :: InvalidTextRepresentation - 错误:uuid

时间:2018-01-24 19:47:47

标签: postgresql ruby-on-rails-4 pg

我们正在将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

0 个答案:

没有答案