Sceko
(Sceko)
2020 年4 月 19 日 09:55
1
日志中有一些错误
红色:
ActiveRecord::StatementInvalid (PG::UndefinedTable: 错误:关系 "groups" 不存在 LINE 1: SELECT "groups"."id", "groups"."name" FROM "groups" WHERE
黄色
在异常应用中间件中处理异常失败:PG::UndefinedTable: 错误:关系 "groups" 不存在 LINE 1:
MaxMindDB (/var/www/discourse/vendor/data/GeoLite2-City.mmdb) 未找到:没有那个文件或目录 @ rb_sysopen - /var/www/discourse/vendor/data/GeoLite2-City.mmdb
MaxMindDB (/var/www/discourse/vendor/data/GeoLite2-ASN.mmdb) 未找到:没有那个文件或目录 @ rb_sysopen - /var/www/discourse/vendor/data/GeoLite2-ASN.mmdb
1 个赞
k4rtik
(Kartik)
2020 年9 月 10 日 11:24
3
我找不到关于搜索该问题的权威解答。有了解的人能在这里提供相关链接吗?
这些 MaxMindDB 警告可以忽略吗?重新构建似乎无法解决问题。我已经遇到这些问题好几个月了。
pfaffman
(Jay Pfaffman)
2021 年1 月 5 日 20:59
4
3 个赞
dichter
(Gregory)
2021 年7 月 3 日 09:46
5
我们在反向代理后使用 Discourse,因此所有用户都共享同一个 IP,我们需要 GeoIP 查询功能。我找不到完全禁用 IP 查询的选项,难道必须经历注册流程并购买我们实际上不需要的许可证,仅仅为了消除日志中的错误吗?
我是否遗漏了禁用此功能的设置?
pfaffman
(Jay Pfaffman)
2021 年7 月 3 日 11:50
6
你应该修复这个问题。像如何在已有 Apache 站点的服务器上设置 Discourse 这样的主题可能包含相关操作指南。
我认为,如果你不设置 MaxMind 密钥,在重新构建时只会收到警告,但不会造成任何损害。
2 个赞
如果未配置许可证密钥,是否可以合理地在用户管理员设置中隐藏和跳过 GeoIP 查询?或者显示一个信息/占位符,说明通过设置许可证密钥可以进行 GeoIP 查询,网址为 https://meta.discourse.org/t/configure-maxmind-for-reverse-ip-lookups/173941?
循环检查错误日志以监控系统运行是良好的实践,并且调查错误会很烦人,仅仅是为了发现它们是预期发生的,因为尝试的操作默认会失败,而通过检查一个设置就可以轻松跳过 。
如果你们基本同意,我可以尝试在 GitHub 上提交一个 PR。但可能我忽略了一些东西,它并不那么容易,或者有我没有看到的缺点。
4 个赞
ToddZ
2025 年11 月 6 日 20:46
10
我一直在忽略这些:
找不到 MaxMindDB(/var/www/discourse/vendor/data/GeoLite2-ASN.mmdb):No such file or directory @ rb_sysopen - /var/www/discourse/vendor/data/GeoLite2-ASN.mmdb
找不到 MaxMindDB(/var/www/discourse/vendor/data/GeoLite2-City.mmdb):No such file or directory @ rb_sysopen - /var/www/discourse/vendor/data/GeoLite2-City.mmdb
……但只是在寻找一种抑制它们的方法。
我本可以配置 MaxMind ,但我并不真的需要 它。
上面的PR 于 2023-11-23 合并——我不应该看到这些错误吗?
由于调整自动化测试过于复杂,它再次被撤销了。曾尝试过,但那些又重新添加了警告,这从根本上破坏了我 PR 的目的:
main ← correct_spec
opened 10:22PM - 23 Nov 23 UTC
This improves the implementation of #18993
1. Error message displayed to user i… s clearer
2. open_db will also be called, even if license key is blank, as it was previously
3. This in turn means no need to keep stubbing 'maxmind_license_key'
因此两者都被撤销了:
main ← revertmaxmind2
opened 12:20AM - 24 Nov 23 UTC
- Revert "DEV: maxmind license checking failing tests (#24534)"
- Revert "UX: S… how on IP lookup if MaxMind key is missing (#18993)"
These changes are leading to surprising results, our logs are now filling up with warnings on dev
We need the change to be redone.
问题很可能是数据库读取依赖于 MaxMind 密钥的存在。但是,数据库可以通过其他方式添加。在我们自己的实例中,我们暂时添加了 免费的 DB-IP 数据库 ,它不需要账户。所以我的 PR 会破坏我们现在的方式。同样的原因导致了测试失败,而我在 PR 中修复了这些问题。但在主分支和/或某些插件中,这很可能导致了其他问题。
一个更好的解决方案,如果有人想再次尝试,将是在尝试加载数据库文件之前检查它们是否存在,而不是检查许可证密钥是否已定义。所以在这里:
仅当 File.join(path, "GeoLite2-City.mmdb") 存在时,才 mmdb_load 它。
调整后的 GUI 输出也可能是一些测试的问题,但应该可以在不破坏测试的情况下添加它,仅在没有可用位置且相应标志为 true 时作为回退,该标志已通过 ret[:no_license] = true 设置。但应该重命名为 no_db 或类似名称,以表明它与是否定义了 MaxMind 许可证密钥无关,而是与实际数据库文件是否存在有关。
1 个赞
ToddZ
2025 年11 月 6 日 23:53
12
谢谢提供的信息!在尝试加载文件之前先检查文件似乎是明智的。我不是开发修复程序的人,所以我将尝试启用 MaxMind 来清理我的日志。