这是我在尝试运行heroku run rake db:migrate
sender_id
是string
== ChangeTypeToInteger: migrating ============================================
-- change_column(:messages, :sender_id, :integer)
rake aborted!
An error has occurred, this and all later migrations canceled:
PG::Error: ERROR: column "sender_id" cannot be cast automatically to type integer
HINT: Specify a USING expression to perform the conversion.
: ALTER TABLE "messages" ALTER COLUMN "sender_id" TYPE integer/app/vendor/bundle/ruby/1.9.1/gems/activerecord-3.2.12/lib/active_record/connection_adapters/postgresql_adapter.rb:652:in `exec'
答案 0 :(得分:0)
我引用手册about ALTER TABLE
:
如果没有隐式或赋值,则必须提供USING子句 从旧型转变为新型。
您需要的是:
ALTER TABLE messages ALTER COLUMN sender_id TYPE integer
只要所有条目均可转换为integer
,此可使用或不使用数据。
如果您为列定义了DEFAULT
,则可能必须删除并重新创建新类型。