【问题标题】:Futon shows no records and CouchDB console shows all records蒲团不显示任何记录,CouchDB 控制台显示所有记录
【发布时间】:2017-04-05 12:53:19
【问题描述】:

看起来 Futon(CouchDB 的基于 Web 的管理员可在 http://:5984/_utils 上找到)以某种方式缓存有关存储在 CouchDB 数据库中的数据的信息。

我实际上不知道如何以及为什么。

如果我用大约 150 000 条记录填充现有数据库(通过服务器上的 PHP 脚本),Futon 仍然显示 0 条记录。 如果我通过蒲团本身添加一些记录,蒲团会显示它们,但仍然不会显示所有记录。

Futon 似乎为每个客户端使用不同的存储空间。 但是数据库本身的创建、删除和重命名会显示在两侧(被褥和控制台)。

【问题讨论】:

  • 您能否确认您启用了 所有文档 视图,而不是例如零行的 map/reduce 视图?

标签: couchdb


【解决方案1】:

这根本不是正常行为。很多人每天都在使用被褥,并期待良好的行为。

如果您是 Web 开发人员并且您不认为它只是浏览器缓存,那么我建议您调查确切 PHP 和浏览器查询之间的区别是什么。你很可能会发现一个大线索。您可以从简单地查看 CouchDB 日志并确认浏览器和控制台查询同一个数据库开始。

接下来,我个人会使用 tcpdump、wireshark 或 Charles 代理查看空中数据。如果可能的话,我喜欢在服务器上收集数据,以排除(非)透明代理。

恕我直言,您有 1% 的可能性会发现一个模糊的被褥错误,而 99% 的可能性会发现查询之间的差异。例如,使用不同的Host 标头会导致应用不同的 vhost 规则,从而可以访问完全不同的数据库。

【讨论】:

  • 我建议在使用 Futon 时将 Firebug 控制台作为一个非常方便的工具。使用控制台面板中的“Persist”选项获取 Futon 活动的完整日志。
【解决方案2】:

只需重置 couchdb 进程 ( couchdb -k ; couchdb -b ),当您再次打开 Futon 时,您将看到所有丢失的数据。

请注意,此修复程序起作用的原因不是因为您重置了数据库,而是因为您重置了 Futon(如果有仅用于重置 Futon 的命令,请告诉我,我会测试)。很可能您的 PHP 脚本创建了一个类似于 Futon 客户端的实例,并且它们不会相互确认更改(我发现至少创建数据库和添加文档是这种情况)。

请注意,这个问题只发生在我将应用程序放入 Web 服务器时。在这种情况下,来自 Futon 的呼叫似乎来自公共地址,而来自我的应用程序的呼叫似乎来自 127.0.0.1(在 /etc/couchdb/local.ini 中,我有 bind_address = 0.0.0.0)。当我在本地开发时,我从来没有遇到过这个问题。

【讨论】:

    【解决方案3】:

    在我的例子中是Nginx 配置部分proxy_buffers 为什么Futon 不显示任何数据。

    我像这样更改我的配置:

    proxy_buffers 4 1024k;
    proxy_buffer_size 1024k;
    

    【讨论】:

      猜你喜欢
      • 2017-05-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-09-03
      • 1970-01-01
      • 2019-03-26
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多