schema.rb 不包含 :add_index 上的 unique
我有以下迁移:
class UniqueIndexOnCustomValueKeys < ActiveRecord::Migration
def self.up
add_index :custom_values, [:customizable_id, :customizable_type, :custom_definition_id], {:unique=>true,:name=>:cv_unique_composite}
end
def self.down
remove_index :custom_values, :cv_unique_composite
end
end
当我运行迁移时,它会在开发数据库中正确创建 UNIQUE 键,但是当我查看 schema.rb
时,:unique 标志不存在。这导致测试数据库没有 UNIQUE 索引。
schema.rb 中的结果行如下所示:
add_index "custom_values", ["customizable_id", "customizable_type", "custom_definition_id"], :name => "cv_unique_composite"
我在这里做错了什么吗?
(Rails 3.0.8,MySql2 gem)
I have the following migration:
class UniqueIndexOnCustomValueKeys < ActiveRecord::Migration
def self.up
add_index :custom_values, [:customizable_id, :customizable_type, :custom_definition_id], {:unique=>true,:name=>:cv_unique_composite}
end
def self.down
remove_index :custom_values, :cv_unique_composite
end
end
When I run the migration, it creates the UNIQUE key properly in the development database, but when I look at schema.rb
, the :unique flag isn't there. This is causing the test database to not have the UNIQUE index.
The resulting line in schema.rb looks like:
add_index "custom_values", ["customizable_id", "customizable_type", "custom_definition_id"], :name => "cv_unique_composite"
Am I doing something wrong here?
(Rails 3.0.8, MySql2 gem)
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
自己试试这个:
try this for your self.up:
为了适应唯一索引,您需要更改 application.rb 中的 active_record.schema_format:
这将强制测试数据库使用 db/development_struct.sql,它从数据库获取原始 sql 语句而不是 ruby 命令。
这个问题解决了Oracle,但其他数据库特定问题也存在同样的问题(在本例中是MySql唯一索引):为什么我在 Rails schema.db 中没有得到任何索引定义 - "# 无法识别的索引...”
In order to accommodate unique indexes, you need to change the active_record.schema_format in application.rb:
This will force the test database to use db/development_structure.sql which takes raw sql statements from the database instead of ruby commands.
This question addresses Oracle, but the same issue exists for other database specific issues (In this case MySql Unique Indexes): Why am I not getting any index defintions in my Rails schema.db - "# unrecognized index ..."