ruby-on-rails - 如何在不首先删除数据库的情况下将带有 Rails 的数据库迁移到第一个修订版?

标签 ruby-on-rails database migration rake

我为我的 Rails 安装设置了一个数据库,并设置了一些迁移。我希望能够将我的数据库重置为没有表/约束/等,但是在不知道迁移次数或第一次迁移的时间戳的情况下找不到合理的方法来执行此操作。这是我看到的选项:

  • rake 数据库:迁移:重置
  • rake db:migrate:down VERSION=20090701154839 其中 20090701154839 是与第一次迁移关联的时间戳
  • rake db:rollback STEP=15 其中有 15 次迁移

db:migrate:reset 的问题是它首先删除数据库(它会执行 db:dropdb:create、然后 db:migrate).

db:migrate:down 的问题是我不想编码开头的 VERSION。

db:rollback 的问题是我不知道它回到开始的步骤数。

我有哪些选择?

最佳答案

rake db:migrate VERSION=0

即使您使用的是较新的带时间戳的迁移文件,它也能正常工作。

更新:我刚刚在 Rails 3.2.1 上测试了它,它仍然有效。它运行 schema_migrations 已知的所有迁移的“向下”部分。我不知道它是否适用于 3.1,但下面的评论表明此功能在那段时间被破坏了。

关于ruby-on-rails - 如何在不首先删除数据库的情况下将带有 Rails 的数据库迁移到第一个修订版?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1196310/

相关文章:

mysql - 用大量测试数据填充数据库表

android - SQLite 数据库副本在由设备而不是模拟器生成时出现损坏

google-cloud-platform - 在 GCP 中迁移项目时出错,有人可以帮助我吗?

ruby-on-rails - Vanity、Rails 3 和 Heroku

ruby-on-rails - Selenium 测试在 Ubuntu 和 Mac OSX 上的表现不同是否有原因?

ruby-on-rails - 在 Rails 中使用观察者模式时传递实例变量

c# - Entity Framework 6 : Creating database with multiple contexts

mysql - 迁移 MySQL 数据并查找新的 FK?

delphi - 将项目从 Delphi 3 移至 Delphi 2010

ruby-on-rails - 未定义的方法 `execute_prepared' Rails Paperclip 到 ActiveStorage 的迁移