运行rake db:migrate VERSION = 0并重新启动迁移后,我丢失了数据库中的所有内容

时间:2015-05-10 03:03:40

标签: mysql ruby-on-rails ruby sqlite web

在我尝试运行rake db:migrate之前,我遇到了一个名为column duplication的错误,所以我运行了rake db:migrate VERSION = 0而是再次运行rake db:migrate。

基本上我正在清理以前的迁移,并且通过从VERSION = 0运行新的迁移,我终于能够完成挂起的迁移,并且再次没有列重复的问题。

但是这就是事情,我运行的命令实际上清除了我之前的所有数据。有没有办法找回我丢失的东西?如果存在列重复错误,那么运行db:migrate的最安全的方法是什么?我真的不想回到VERSION = 0

2 个答案:

答案 0 :(得分:3)

  

有没有办法找回我丢失的东西?

您删除了数据库表并重新创建了它。存储在该表中的所有数据也已删除并丢失。获取数据的唯一方法是从备份恢复。你有最近的数据库备份吗?

  

如果出现列重复错误,运行db:migrate的最安全的方法是什么。

如果迁移有错误,请修复该迁移并重新运行。在您的示例中:如果迁移失败并显示错误消息,告知您存在重复列,则只需删除尝试添加重复列的代码并重新运行迁移。

答案 1 :(得分:0)

rails migration有一个严格的流程要遵循。假设您有重复的列。您应该编写另一个迁移文件来删除该重复列。 当你跑完

  

rails db:migrate VERSION = 0

它再次创建您的数据库,显而易见,数据将丢失。

因此,请确保Rails中使用的数据库中的任何更正都应遵循创建新迁移的严格过程,而不是编辑相同的过程。