# desc "Empty the database from DATABASE_URL or config/database.yml for the current RAILS_ENV (use db:drop:all to drop all databases in the config). Without RAILS_ENV it defaults to purging the development and test databases."
task :purge => [:load_config] do
ActiveRecord::Tasks::DatabaseTasks.purge_current
end
18 回答
要删除特定数据库,可以在rails控制台上执行此操作:
然后再次迁移DB
只需发出以下步骤:删除数据库,然后重新创建数据库,迁移数据,如果有种子,则播种数据库:
由于
rake
的默认环境是开发,如果您在规范测试中看到异常,则应该为测试环境重新创建db,如下所示:在大多数情况下,测试数据库是在测试过程中播种的,因此不需要传递
db:seed
任务操作 . 否则,您应该准备数据库:要么
此外,要使用重新创建任务,您可以将以下代码添加到 Rakefile 中:
然后发出:
使用像
全部在一条线上 . 这更快,因为环境不会一次又一次地重新加载 .
db:drop - 将丢弃数据库 .
db:create - 将创建数据库(主机/数据库/密码将从config / database.yml获取)
db:migrate - 将从目录(db / migration / .rb)*运行现有迁移 .
db:seed - 将从目录(db / migration / seed.rb)运行种子数据 .
我通常喜欢:
一次做所有事 .
干杯!
更新:随着Rails 5的出现,可以通过以下命令访问此命令:
rails db:purge db:create db:migrate RAILS_ENV = test
从最新的rails 4.2发布版开始,您现在可以运行:
资料来源:commit
它可以像上面提到的一起使用:
只需你可以跑
rake db:setup
如果您使用某些数据创建种子文件,它将删除数据库,创建新数据库并从种子填充数据库 .
在Rails 4上,所有需要的都是
这将删除数据库上的全部内容,并从schema.rb文件重新创建架构,而无需逐个应用所有迁移 .
我今天对我的rails架构做了很多改动 . 我意识到我需要在层次结构中另外添加两个模型,其他一些模型需要删除 . 模型和控制器需要进行许多微小的更改 .
我添加了两个新模型并使用以下方法创建它们:
然后我编辑了schema.rb文件 . 我手动删除了不再需要的旧模型,根据需要更改了外键字段,只是对它进行了重新排序以使其更清晰 . 我 deleted 所有迁移,然后通过以下方式重新运行构建:
它工作得很好 . 当然,所有数据都必须重新加载 . Rails意识到迁移已被删除并重置高水位标记:
我知道有两种方法可以做到这一点:
这将重置您的数据库并使用all重新加载当前架构:
这将破坏您的数据库,然后创建它,然后迁移您当前的模式:
两种情况下都会丢失所有数据 .
根据Rails guide,应该使用这一个内联因为它将从
schema.rb
加载而不是逐个重新加载迁移文件:从命令行运行
在rails 4.2上,删除所有数据但保留数据库
https://github.com/rails/rails/blob/4-2-stable/activerecord/CHANGELOG.md
我在终端使用以下一个班轮 .
我把它作为shell别名并命名为
remigrate
到现在为止,您可以轻松地“链接”Rails任务:
根据您的需要,您可以使用......
rake db:create
...从
config/database.yml
开始从头开始构建数据库,或者......rake db:schema:load
...从头开始从
schema.rb
文件构建数据库 .您可以使用
db:reset
- 用于运行db:drop和db:setup或db:migrate:reset
- 它运行db:drop,db:create和db:migrate .依赖于你想要使用exists schema.rb
因为在开发过程中,您总是希望重新创建数据库,您可以在lib / tasks文件夹中定义rake任务 .
在终端你会跑
它将重建您的数据库
您可以使用以下命令行:
我认为运行此命令的最佳方法是:
你可以手动做:
或者只是
rake db:reset
,它将运行上述步骤,但也将运行您的db/seeds.rb
文件 .一个额外的细微差别是
rake db:reset
直接从您的schema.rb
文件加载,而不是再次运行所有迁移文件 .在所有情况下,您的数据都会被吹走 .