【问题标题】:Schema file does not reflect table removal migrations架构文件不反映表删除迁移
【发布时间】:2012-03-16 14:44:21
【问题描述】:

我通过运行 rails generate migration RemoveObjects 删除了我的 Rails 数据库中的几个表,然后运行 ​​rake db:migrate 以完成迁移,但是我没有看到我的 schema.rb 文件中反映的更改。

我还应该怎么做才能从该文件中删除对这些对象的引用?

【问题讨论】:

    标签: ruby-on-rails ruby-on-rails-3.1 rake


    【解决方案1】:

    试试这个:

    rake db:schema:dump
    

    【讨论】:

    • 运行该命令并没有从我的架构文件中删除对象
    • 这将从数据库创建架构文件。所以也许你的迁移没有奏效?您能否尝试回滚迁移并再次运行它。
    • 你说得对,我查看了“rails generate migration RemoveObjects”生成的文件,它们基本上都是空白的......我应该从头开始构建这些迁移吗?
    • 所以我继续编辑了 schema.rb 文件,然后在 rake db:migrate 后面跟着 rake db:schema:dump 并且架构文件没有重新生成。所以我猜这些表毕竟被删除了,并且更改没有反映在该文件中。
    • “rails generate migration RemoveObjects”只会创建迁移文件。您必须在该文件中编写实际的迁移步骤。你可以在这里找到更多细节:guides.rubyonrails.org/migrations.html
    【解决方案2】:

    这次迁移会!您可能在迁移本身内部犯了一个错误。

    class DropTables < ActiveRecord::Migration
      def up
        drop_table :table_name
      end
    
      def down
        raise ActiveRecord::IrreversibleMigration
      end
    end
    

    【讨论】:

      猜你喜欢
      • 2014-08-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-09-24
      • 2013-10-06
      • 2017-02-23
      • 2021-06-09
      • 1970-01-01
      相关资源
      最近更新 更多