重置数据库(清除所有数据库) ,然后播种一个数据库

是否有 rake 命令来清除数据库表中的数据?

如何创建一个 db: 種脚本来预先填充表中的数据?

119573 次浏览

我使用 rake db:reset,它会删除数据库,然后重新创建数据库,并包含您的 Seed.rb 文件。 Http://guides.rubyonrails.org/migrations.html#resetting-the-database

您可以删除所有内容并重新创建数据库 + 种子:

  1. rake db:reset: 从 schema.rb 加载
  2. rake db:drop db:create db:migrate db:seed: 迁移带来的负载

确保没有连接到 db (Rails server、 sql client. .) ,否则 db 不会丢失。

Rb 是数据库当前状态的快照,由以下方法生成:

rake db:schema:dump

如果您不想为了重新加载数据而删除和重新创建整个表,那么可以在引导.db 文件中使用 MyModel.destroy_all(或 delete_all)在 MyModel.create!(...)语句加载数据之前清除表。然后,您可以一遍又一遍地重新执行 db:seed操作。(显然,这只会影响已加载数据的表,而不会影响其他表。)

有一个“脏黑客”在 https://stackoverflow.com/a/14957893/4553442添加一个“去种子”操作类似于迁移向上和向下..。

在 Rails5中,rake命令行工具已经被别名为 rails,因此现在

rails db:reset而不是 rake db:reset

一样有效

当您想删除本地数据库并使用从 db/seeds.rb加载的数据重新启动时,可以使用 rake db:reset。当您仍然在计算模式时,并且经常需要向现有模型添加字段时,这是一个有用的命令。

一旦重置命令被使用,它将执行以下操作: 删除数据库: rake db:drop 加载模式: rake db:schema:load 种子数据: rake db:seed

但是,如果您想完全删除您的数据库,您可以使用 rake db:drop。删除数据库还将删除任何架构冲突或错误数据。如果希望保留所拥有的数据,请确保在运行此命令之前对其进行备份。

这是一篇关于最重要的 数据库命令的详细文章。

在 Rails6上,您现在可以执行类似于

这将截断当前环境中每个数据库的表并加载种子

Https://blog.saeloun.com/2019/09/30/rails-6-adds-db-seed-replant-task-and-db-truncate_all.html

$ rails db:seed:replant --trace
** Invoke db:seed:replant (first_time)
** Invoke db:load_config (first_time)
** Invoke environment (first_time)
** Execute environment
** Execute db:load_config
** Invoke db:truncate_all (first_time)
** Invoke db:load_config
** Invoke db:check_protected_environments (first_time)
** Invoke db:load_config
** Execute db:check_protected_environments
** Execute db:truncate_all
** Invoke db:seed (first_time)
** Invoke db:load_config
** Execute db:seed
** Invoke db:abort_if_pending_migrations (first_time)
** Invoke db:load_config
** Execute db:abort_if_pending_migrations
** Execute db:seed:replant

请遵照以下指示:

  1. rails db:migrate:reset

  2. 又是 rails db:seed