ruby-on-rails - 什么可能导致数据库被意外截断?
问题描述
今天下午,我正在开发我的 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 应用程序没有做任何事情导致它。这一定是我从控制台所做的。
到底是什么导致了这样的事情发生?如果不出意外,哪些命令会删除所有表中的所有行?
解决方案
推荐阅读
- reactjs - 使用 cypress 处理 React 重新渲染
- python - KeyError: 'print $2' 当我使用 subprocess.call("ps -ef | grep wget | grep {0} | awk '{print $2}'
- javascript - 在 Ant Design Tree 中过滤 treeNodes
- flutter - 如何在 Flutter 中打开原生表情符号键盘
- wix - 为非管理员用户创建 WiX MSI 补丁包或安装更新
- svelte - Svelte 应用程序构建但无法访问本地主机
- android - 从接收方获取数据时,intent 为 null
- python - 如何在 Python 中创建同一个类的多个实例并传递不同的参数
- vue.js - 使用状态快照在 Vuex 中撤消/重做
- android - Flutter build with CI getting error Program type already present: com.google.common.util.concurrent.ListenableFuture