我添加了一个我认为我将需要的表格,但现在不再计划使用它。我该如何移除那张桌子?
我已经运行了迁移,所以这个表在我的数据库中。我认为rails生成迁移应该能够处理这个问题,但我还没有弄清楚如何处理。
我试过了:
rails generate migration drop_tablename
但这只是产生了一个空迁移。
在Rails中删除表的“官方”方式是什么?
我添加了一个我认为我将需要的表格,但现在不再计划使用它。我该如何移除那张桌子?
我已经运行了迁移,所以这个表在我的数据库中。我认为rails生成迁移应该能够处理这个问题,但我还没有弄清楚如何处理。
我试过了:
rails generate migration drop_tablename
但这只是产生了一个空迁移。
在Rails中删除表的“官方”方式是什么?
当前回答
如果要从模式中删除表,请执行下面的操作——
rails db:rollback
其他回答
警告:这样做的风险由您自己承担,正如@z-atef和@nzifnab正确指出的那样,Rails不会意识到这些更改,您的迁移序列填充失败,您的模式将与您的同事的不同。这仅仅是为当地的发展修修补补提供资源。
虽然这里提供的答案工作正常,但我想要一些更“直接”的东西,我在这里找到了:链接 首先进入rails控制台:
$rails console
然后输入:
ActiveRecord::Migration.drop_table(:table_name)
完成了,为我工作了!
你可以按照指南中的方式回滚一次迁移:
http://guides.rubyonrails.org/active_record_migrations.html#reverting-previous-migrations
生成迁移:
rails generate migration revert_create_tablename
编写迁移:
require_relative '20121212123456_create_tablename'
class RevertCreateTablename < ActiveRecord::Migration[5.0]
def change
revert CreateTablename
end
end
通过这种方式,您还可以回滚并用于恢复任何迁移
您可以简单地从rails控制台删除一个表。 首先打开控制台
$ rails c
然后将此命令粘贴到控制台
ActiveRecord::Migration.drop_table(:table_name)
将table_name替换为要删除的表。
您也可以直接从终端删除表。只需输入应用程序的根目录并运行此命令
$ rails runner "Util::Table.clobber 'table_name'"
我不能让它与迁移脚本一起工作,所以我继续使用这个解决方案。使用终端进入rails控制台:
rails c
Type
ActiveRecord::Migration.drop_table(:tablename)
这对我来说很有效。这将删除前一个表。别忘了跑步
rails db:migrate
ActiveRecord:: Base.connection。drop_table: table_name