我添加了一个我认为我将需要的表格,但现在不再计划使用它。我该如何移除那张桌子?
我已经运行了迁移,所以这个表在我的数据库中。我认为rails生成迁移应该能够处理这个问题,但我还没有弄清楚如何处理。
我试过了:
rails generate migration drop_tablename
但这只是产生了一个空迁移。
在Rails中删除表的“官方”方式是什么?
我添加了一个我认为我将需要的表格,但现在不再计划使用它。我该如何移除那张桌子?
我已经运行了迁移,所以这个表在我的数据库中。我认为rails生成迁移应该能够处理这个问题,但我还没有弄清楚如何处理。
我试过了:
rails generate migration drop_tablename
但这只是产生了一个空迁移。
在Rails中删除表的“官方”方式是什么?
当前回答
您需要使用以下命令创建一个新的迁移文件
rails generate migration drop_table_xyz
并在新生成的迁移文件(db/migration/xxxxxxx_drop_table_xyz)中编写drop_table代码
drop_table :tablename
或者如果你想在不迁移的情况下删除表,只需打开rails控制台by
$ rails c
并执行以下命令
ActiveRecord::Base.connection.execute("drop table table_name")
或者你可以使用更简单的命令
ActiveRecord::Migration.drop_table(:table_name)
其他回答
你能做的最好的办法就是
rails g migration Drop_table_Users
然后执行以下操作
rake db:migrate
打开rails控制台
ActiveRecord::Base.connection.execute("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
通过这种方式,您还可以回滚并用于恢复任何迁移
你不能简单地运行drop_table:table_name,相反,你可以通过运行以下命令创建一个空迁移: rails迁移drop安装
然后你可以把这个添加到空迁移中:
class DropInstalls < ActiveRecord::Migration
def change
drop_table :installs
end
end
然后在命令行中运行rails db:migrate,这将删除安装表 在这里找到了解决方案
Run
rake db:migrate:down VERSION=<version>
其中<version>是您想要恢复的迁移文件的版本号。
例子:-
rake db:migrate:down VERSION=3846656238