我一直收到此错误,无法找到解决方案。
我在Ubuntu服务器上安装了mongoDB和PHP,安装工作正常,我可以通过终端访问mongo(没有问题的SSH),但是,当我尝试通过任何PHP应用程序访问它时即使日志显示连接已被接受,我也会收到“找不到候选服务器”。
我尝试将bind_ip设置为服务器ip,设置为127.0.0.1,设置为localhost,但没有任何工作。
额外信息: - 我在独立模式下运行。 - 使用mongod启动mongo --fork --auth --port 27017 --logpath /var/log/mongodb/server1.log --logappend --dbpath / var / lib / mongodb / data / db /
有没有人有任何想法?
感谢。
答案 0 :(得分:0)
当我使用复制(replSet
选项)运行MongoDB时,似乎会出现此错误,并且由于某种原因没有可用的主服务器。
例如,重新启动主节点后,新主节点的选择似乎需要一段时间,只有辅助节点可用。
你说你没有运行复制,但处于“独立”模式......在这种情况下,other questions我看到建议确保你运行的是最新的MongoDB和PHP驱动程序版本(来自Ubuntu 10gen apt-get源码)。另外,如果出现防火墙问题,请仔细检查您是否可以从相同的服务器访问mongo <{1}}
查看要传递给MongoClient()
PHP驱动程序的连接字符串会很有帮助。如果您不使用复制,它将看起来像这样:
mongo mongohost1.server.com:27107 -uUSERNAME -pPASSWORD
如果你使用复制,它会看起来像这样:
mongodb://USERNAME:PASSWORD@localhost:27017
如果您正在使用复制,请确保将主Mongodb服务器指定为其中一个服务器(驱动程序应检测哪个是主服务器,并检测主服务器是否更改)。
如果这一切都设置正确,请仔细检查您确实拥有主要内容。可能有问题,导致MongoDB不选择主节点。您可以登录Mongo命令行/控制台应用程序并运行它来检查所有副本集成员的状态:
我正在运行PHP 5.3,MongoDB 2.4.8,MongoDB PHP Driver 1.4.5,Ubuntu 12.04。
(我认为这篇旧帖已经得到了解决,但我发现自己遇到了类似的问题,所以我想我可能会提供一个答案来帮助人们解决他们的问题。