【问题标题】:Why could database changes disappear?为什么数据库更改会消失?
【发布时间】:2012-03-09 14:26:04
【问题描述】:

我有一个在 64 位 Amazon EC2 实例上运行的 MongoDB 服务器(启用日志记录)。昨天我更新了一些文档并刷新了网页以确保它反映了更改。它做了。 但今天我看到,不仅昨天的变化消失了。我失去了一周的更新! 为什么会这样?是否有可能恢复丢失的数据?

也许我进行更改的方式有问题?

public function edit_app()
{
    $query = array('_id' => $_POST['id']);
    $apps = $this->mongo->db->apps;
    if ($app = $apps->findOne($query)) {
        $app['title'] = $_POST['title'];
        $app['version'] = $_POST['version'];
        $app['author'] = $_POST['author'];
        ...
        $apps->save($app);
    }
}

【问题讨论】:

    标签: mongodb missing-data


    【解决方案1】:

    根据您提供的信息,没有太多可以确定的说法。不过,我可以提供一些提示,让您朝着正确的方向前进:

    1. 考虑应用程序是否有可能 进程可能一直在内存中保存一些文档(加载 更新前)并在更新后重新保存?
    2. 服务器是副本集的一部分吗?如果是这样,是否所有成员 副本集健康,主服务器启动并正确选择?

    【讨论】:

    • 要添加到回复中,还要检查日志。日志是诊断可能出了什么问题的良好起点。
    • @Siddharth Singh 谢谢。我检查了日志,但那里并没​​有什么特别之处 :( - 只有很多记录,例如“[clientcursormon] mem (MB) res:16 virt:820 mapped:80”,而我通过 SSH 隧道连接。
    • @zooone9243 这不是副本集。我通过网站的管理面板(均用 PHP 编写)进行了更改。可能是我连接到 MongoVue 中的数据库,在管理面板中进行更改后,我切换到 MongoVue,之后它进行了一些更改。但这并不能解释为什么我失去了一周的更改,而不仅仅是最新的更改。真的很奇怪。
    • 我看到你已经编辑了这个问题,但我现在对你的帮助仍然很模糊。任何数量的事情都可能出错,并且很难用您提供的信息明确地说出任何事情。
    【解决方案2】:

    对不起,我一定是瞎了眼。 edit_app() 函数出错:

    $app['visible'] = $_POST['visible'];        // was
    $app['visible'] = isset($_POST['visible']); // fixed
    

    【讨论】:

      猜你喜欢
      • 2020-10-23
      • 1970-01-01
      • 1970-01-01
      • 2021-03-22
      相关资源
      最近更新 更多