我添加了一个我认为我将需要的表格,但现在不再计划使用它。我该如何移除那张桌子?
我已经运行了迁移,所以这个表在我的数据库中。我认为rails生成迁移应该能够处理这个问题,但我还没有弄清楚如何处理。
我试过了:
rails generate migration drop_tablename
但这只是产生了一个空迁移。
在Rails中删除表的“官方”方式是什么?
我添加了一个我认为我将需要的表格,但现在不再计划使用它。我该如何移除那张桌子?
我已经运行了迁移,所以这个表在我的数据库中。我认为rails生成迁移应该能够处理这个问题,但我还没有弄清楚如何处理。
我试过了:
rails generate migration drop_tablename
但这只是产生了一个空迁移。
在Rails中删除表的“官方”方式是什么?
当前回答
你能做的最好的办法就是
rails g migration Drop_table_Users
然后执行以下操作
rake db:migrate
其他回答
简单而正式的方式是这样的:
rails g migration drop_tablename
现在转到您的db/migrate,并寻找包含drop_tablename作为文件名的文件,并将其编辑为此。
def change
drop_table :table_name
end
那你就得跑
rake db:migrate
在你的控制台。
您需要使用以下命令创建一个新的迁移文件
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)
替代引发异常或试图重新创建一个现在空的表-同时仍然启用迁移回滚,重做等-
def change
drop_table(:users, force: true) if ActiveRecord::Base.connection.tables.include?('users')
end
我认为,为了完全“正式”,你需要创建一个新的迁移,并把drop_table放在self.up中。自我。方法应该包含完整地重新创建表的所有代码。假定代码可以从模式中提取。Rb在你创建迁移的时候。
添加代码来创建一个您知道不再需要的表,这似乎有点奇怪,但这将保持所有迁移代码的完整和“正式”,对吗?
我只是对我需要放下的桌子做了这样的操作,但老实说,我没有测试“放下”,也不确定我为什么要这么做。
执行命令:-
rails g migration drop_table_name
然后:
rake db:migrate
或者如果你使用的是MySql数据库,那么:
登录数据库 显示数据库; 显示表; table_name下降;