我添加了一个我认为我将需要的表格,但现在不再计划使用它。我该如何移除那张桌子?

我已经运行了迁移,所以这个表在我的数据库中。我认为rails生成迁移应该能够处理这个问题,但我还没有弄清楚如何处理。

我试过了:

rails generate migration drop_tablename

但这只是产生了一个空迁移。

在Rails中删除表的“官方”方式是什么?


当前回答

如果您想删除一个特定的表,您可以这样做

$ rails db:migrate:up VERSION=[Here you can insert timestamp of table]

否则,如果您想删除所有数据库,您可以这样做

$rails db:drop

其他回答

您可以简单地从rails控制台删除一个表。 首先打开控制台

$ rails c

然后将此命令粘贴到控制台

ActiveRecord::Migration.drop_table(:table_name)

将table_name替换为要删除的表。

您也可以直接从终端删除表。只需输入应用程序的根目录并运行此命令

$ rails runner "Util::Table.clobber 'table_name'"

执行命令:-

rails g migration drop_table_name

然后:

rake db:migrate

或者如果你使用的是MySql数据库,那么:

登录数据库 显示数据库; 显示表; table_name下降;

打开rails控制台

ActiveRecord::Base.connection.execute("drop table table_name")

帮助文档

在迁移中,您可以通过以下方式删除表:

drop_table(table_name, **options)

选项:

:力 设置为:cascade也可以删除依赖对象。默认为false

: if_exists 设置为true仅在表存在时删除它。默认为false

例子:

Create migration for drop table, for example we are want to drop User table rails g migration DropUsers Running via Spring preloader in process 13189 invoke active_record create db/migrate/20211110174028_drop_users.rb Edit migration file, in our case it is db/migrate/20211110174028_drop_users.rb class DropUsers < ActiveRecord::Migration[6.1] def change drop_table :users, if_exist: true end end Run migration for dropping User table rails db:migrate == 20211110174028 DropUsers: migrating =============================== -- drop_table(:users, {:if_exist=>true}) -> 0.4607s

你能做的最好的办法就是

rails g migration Drop_table_Users

然后执行以下操作

rake db:migrate