首页 > 解决方案 > 什么可能导致数据库被意外截断?

问题描述

今天下午,我正在开发我的 Ruby on Rails 应用程序时,我的笔记本电脑上的开发版本突然停止工作。原来整个数据库都被清空了。我有一个备份,所以这不是问题,但我很担心这种情况发生在我的应用程序的在线版本中,其中包含更重要的数据。

我当时在做什么可能会影响问题: - Ran 2 迁移添加表,例如:

class AddUpdatedatesToProduct < ActiveRecord::Migration
  def change
    add_column :products, :last_image_check, :datetime
    add_column :products, :last_feed_update, :datetime
    add_column :products, :last_response_check, :datetime
  end
end

class AddRuntimeToFeedRun < ActiveRecord::Migration
  def change
    add_column :feed_runs, :runtime, :datetime
  end
end

我跑了,将gembundle update降级到 10.5(从 12)。rake尝试升级 gem rails-spec(同时尝试解决此处提到last_comment error的问题)。以防万一的问题,但我很确定我从来没有这样做过。rake db:drop

我通过直接登录 postgresql 确认所有表都已清空(但表本身仍然存在)。

我的代码中没有任何内容可以在数据库中进行任何重大删除。我没有提到重置数据库、截断或类似的东西。从这个意义上说,代码中没有任何内容会影响所有表。

我的日志(在我的故障排除过程中重新启动笔记本电脑后我无法再访问)只是显示一个页面正在加载,然后是下一个页面,其中包含与不再存在的数据相关的错误。我很确定实际运行 Web 应用程序没有做任何事情导致它。这一定是我从控制台所做的。

到底是什么导致了这样的事情发生?如果不出意外,哪些命令会删除所有表中的所有行?

标签: ruby-on-railspostgresqlrake

解决方案


推荐阅读