是否有 rake 命令来清除数据库表中的数据?
如何创建一个 db: 種脚本来预先填充表中的数据?
我使用 rake db:reset,它会删除数据库,然后重新创建数据库,并包含您的 Seed.rb 文件。 Http://guides.rubyonrails.org/migrations.html#resetting-the-database
rake db:reset
您可以删除所有内容并重新创建数据库 + 种子:
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操作。(显然,这只会影响已加载数据的表,而不会影响其他表。)
MyModel.destroy_all
delete_all
MyModel.create!(...)
db:seed
有一个“脏黑客”在 https://stackoverflow.com/a/14957893/4553442添加一个“去种子”操作类似于迁移向上和向下..。
在 Rails5中,rake命令行工具已经被别名为 rails,因此现在
rake
rails
rails db:reset而不是 rake db:reset
rails db:reset
一样有效
当您想删除本地数据库并使用从 db/seeds.rb加载的数据重新启动时,可以使用 rake db:reset。当您仍然在计算模式时,并且经常需要向现有模型添加字段时,这是一个有用的命令。
db/seeds.rb
一旦重置命令被使用,它将执行以下操作: 删除数据库: rake db:drop 加载模式: rake db:schema:load 种子数据: rake db:seed
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
请遵照以下指示:
rails db:migrate:reset
又是 rails db:seed
rails db:seed