【发布时间】:2016-11-05 18:48:58
【问题描述】:
我有一个大型数据库,其中包含大量表和这些表上的许多索引。每次我运行迁移时,都会生成 schema.rb 文件,除了不包含任何索引。新表和列添加良好。如果我在迁移后手动将 add_index 行重新添加到 schema.rb 文件中,它可以正常工作,但是在每次迁移后执行此操作很麻烦。
几个月来我一直在处理这个问题,但找不到任何解决方案或解决方法。有谁知道会发生什么?
使用 Postgres 和 Rails 3。
【问题讨论】:
-
您可以尝试通过生成迁移文件来将索引添加到所有表
add_index :users, [:email, :first_name, :last_name]等等......然后运行迁移 -
似乎索引已经在表上(当我通过 psql 连接并运行'\d table_name'时)。但由于某种原因,它永远不会被写入 schema.rb 文件。
-
FWIW,我尝试使用 add_index 运行迁移,生成的结果 schema.rb 文件仍然不包含索引。
-
我假设您已经查看了
config/application.rb、您的初始化程序和您的环境文件中的任何突出的东西?如果没有,你会寻找类似config.active_record.something_about_schema -
@D-Nice 如果我们能看到架构和迁移,调试起来会更容易。您使用的是 add_index 还是 index: true? index: true 适用于references 和belongs_to 但不适用于add_column。 add_index 通常应该可以工作。您可以分享架构和示例迁移吗?
标签: ruby-on-rails postgresql ruby-on-rails-3 migration