【发布时间】:2012-01-18 19:12:38
【问题描述】:
我在尝试回滚我的一项迁移时遇到问题。似乎 Rails 正在为迁移生成一个带有临时索引的临时表。我在这张表上的实际索引少于 64 个字符,但是每当 Rails 尝试为其创建临时索引时,它就会变成一个长度超过 64 个字符的名称,并引发错误。
这是我的简单迁移:
class AddColumnNameToPrices < ActiveRecord::Migration
def self.up
add_column :prices, :column_name, :decimal
end
def self.down
remove_column :prices, :column_name
end
end
这是我得到的错误:
== AddColumnNameToPrices: reverting ============================================
-- remove_column(:prices, :column_name)
rake aborted!
An error has occurred, this and all later migrations canceled:
Index name 'temp_index_altered_prices_on_column_and_other_column_and_third_column' on table 'altered_prices' is too long; the limit is 64 characters
我已经更改了列名,但示例仍然存在。我可以在第二次迁移中进行更改,但这仍然意味着我无法回滚此表上的迁移。我可以在新的迁移中重命名索引,但这仍然使我无法进行单次迁移。
有没有人知道如何解决这个问题?
【问题讨论】:
-
那是所涉及索引的真实名称吗?
-
没有没有。只是想从实际项目中抽象一点。
标签: ruby-on-rails ruby-on-rails-3 rails-migrations