【发布时间】:2016-06-13 20:05:03
【问题描述】:
我正在尝试使用 Rails 4.2.4 和 PostGresql 运行以下 Rails 迁移……
class ChangeTimeInMsColInMyObjectTimes < ActiveRecord::Migration
def change
change_column :my_object_times, :time_in_ms, :integer, :limit => 8
end
end
但它会导致以下错误。我
rake db:migrate
== 20160613195631 ChangeTimeInMsColInMyObjectTimes: migrating =====================
-- change_column(:my_object_times, :time_in_ms, :integer, {:limit=>8})
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 bigint
HINT: You might need to specify "USING time_in_ms::bigint".
: ALTER TABLE "my_object_times" ALTER COLUMN "time_in_ms" TYPE bigint
/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'
我需要在迁移中使用什么正确的语法?
谢谢,- 戴夫
【问题讨论】:
-
time_in_ms现在是什么类型? -
它的类型是“interval”。
标签: postgresql ruby-on-rails-4 migration rails-activerecord bigint