cai*_*lin 3 ruby-on-rails rails-migrations ruby-on-rails-3
我在尝试回滚我的一个迁移时遇到了问题.看起来好像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
Run Code Online (Sandbox Code Playgroud)
这是我得到的错误:
== 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
Run Code Online (Sandbox Code Playgroud)
我已经更改了列名,但示例仍然存在.我可以在第二次迁移中进行更改,但这仍然意味着我无法在此表上回滚迁移.我可以在新的迁移中重命名索引,但这仍然使我无法进行单次迁移.
有没有人有关于如何解决这个问题的想法?
看起来您的数据库模式实际上已经调用了索引prices_on_column_and_other_column_and_third_column.您可能已经在之前的游戏中使用迁移定义了索引.但不仅仅是从迁移中删除了索引定义.
如果是真的,你有两个选择:
:name => 'short_index_name'add_index调用选项,以使make rails为索引生成更短的名称.| 归档时间: |
|
| 查看次数: |
3224 次 |
| 最近记录: |