Ruby on rails 重置数据库(全部清除),然后为数据库设定种子

Ruby on rails 重置数据库(全部清除),然后为数据库设定种子,ruby-on-rails,database,seeding,Ruby On Rails,Database,Seeding,是否有一个rake命令来清除数据库表中的数据 如何创建db:seed脚本以将数据预填充到我的表中?我使用rake db:reset删除然后重新创建数据库,并包含seeds.rb文件。 您可以删除所有内容并使用以下两种方法重新创建数据库+种子: rake db:reset:从schema.rb加载 rake db:drop db:create db:migrate db:seed:从迁移加载 确保您没有连接到数据库(rails服务器、sql客户端…),否则数据库不会断开 schema.rb是由以下

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


如何创建db:seed脚本以将数据预填充到我的表中?

我使用
rake db:reset
删除然后重新创建数据库,并包含seeds.rb文件。

您可以删除所有内容并使用以下两种方法重新创建数据库+种子:

  • rake db:reset
    :从schema.rb加载
  • rake db:drop db:create db:migrate db:seed
    :从迁移加载
  • 确保您没有连接到数据库(rails服务器、sql客户端…),否则数据库不会断开

    schema.rb是由以下程序生成的数据库当前状态的快照:

    rake db:schema:dump
    

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


    在添加类似于上下迁移的“去种子化”操作时有一个“肮脏的黑客”…

    从Rails 5开始,
    rake
    命令行工具被别名为
    Rails
    ,所以现在

    rails-db:reset
    而不是
    rake-db:reset


    同样有效

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

    使用重置命令后,将执行以下操作: 删除数据库:
    rake db:Drop
    加载模式:
    rake db:schema:Load
    为数据设定种子:
    rake db:Seed

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


    这是一篇关于最重要问题的详细文章

    在Rails 6上,您现在可以执行以下操作

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


    附带说明:如果在生产环境中,您可能必须重新启动rails服务器才能显示更改/更新页面,从零开始重新创建一切每次我都花了很长时间来提醒人们关闭任何服务器,以确保数据库被正确删除。伟大的解决方案-比必须删除整个数据库更简单、更少干扰!我很高兴这能有所帮助。我认为这是2020年应该采用的方式,但鉴于Rails 6的一项功能,2010年再次提出了这个原始问题——Rails开发人员似乎同意您的看法
    $ 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