我正在使用带有PostGre数据库的Rails 4.2.3。我尝试将我的表中的列类型更改为“interval”类型,因此我尝试了以下迁移:
class ChangeTimeInMsInMyObjectTimes < ActiveRecord::Migration
def change
change_column :my_object_times, :time_in_ms, :interval
end
end
当我运行 "rake db:migrate" 时,我遇到了以下令人失望的错误...
== 20160530164019 ChangeTimeInMsInMyObjectTimes: migrating ========================
-- change_column(:my_object_times, :time_in_ms, :interval)
rake aborted!
StandardError: An error has occurred, this and all later migrations canceled:
PG::DatatypeMismatch: ERROR: column "time_in_ms" cannot be cast automatically to type interval
HINT: You might need to specify "USING time_in_ms::interval".
: ALTER TABLE "my_object_times" ALTER COLUMN "time_in_ms" TYPE interval
/Users/davea/.rvm/gems/ruby-2.3.0@global/gems/activerecord-4.2.5.1/lib/active_record/connection_adapters/postgresql/database_statements.rb:155:in `async_exec'
/Users/davea/.rvm/gems/ruby-2.3.0@global/gems/activerecord-4.2.5.1/lib/active_record/connection_adapters/postgresql/database_statements.rb:155:in `block in execute'
/Users/davea/.rvm/gems/ruby-2.3.0@global/gems/activerecord-4.2.5.1/lib/active_record/connection_adapters/abstract_adapter.rb:472:in `block in log'
/Users/davea/.rvm/gems/ruby-2.3.0@global/gems/activesupport-4.2.5.1/lib/active_support/notifications/instrumenter.rb:20:in `instrument'
/Users/davea/.rvm/gems/ruby-2.3.0@global/gems/activerecord-4.2.5.1/lib/active_record/connection_adapters/abstract_adapter.rb:466:in `log'
我该如何修改我的迁移以使其工作?
simplified_type' for class
ActiveRecord :: ConnectionAdapters :: PostgreSQLColumn'”。 - Daveinterval
类型的ActiveRecord支持,你的问题在于错误信息(列“time_in_ms”无法自动转换为类型间隔)以及解决方案(添加适当的USING子句)。 - mu is too short