【问题标题】:After I ran rake db:migrate VERSION=0 and redid the migration, I lost everything in my database在我运行 rake db:migrate VERSION=0 并重新进行迁移后,我丢失了数据库中的所有内容
【发布时间】:2015-07-20 18:05:26
【问题描述】:

在尝试运行 rake db:migrate 之前,我遇到了一个称为列重复的错误,因此我运行 rake db:migrate VERSION=0 并再次运行 rake db:migrate。

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

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

【问题讨论】:

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


    【解决方案1】:

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

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

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

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

    【讨论】:

    • 嗨,找出哪些列被重复并删除它们的命令是什么?我试图删除架构文件中的字段,但运行 db migrate 时仍然出现相同的错误
    【解决方案2】:

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

    rails db:migrate VERSION=0

    它正在再次创建您的数据库,如此明显,数据将丢失。

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-08-18
      • 1970-01-01
      • 2015-09-06
      • 2013-04-17
      • 2015-12-20
      • 2013-10-25
      • 2010-11-27
      • 1970-01-01
      相关资源
      最近更新 更多