今天在用TP6框架连接 MongoDB ,但是中途遇到了一个问题 :
No suitable servers found (`serverSelectionTryOnce` set): [Failed to resolve 'rootlocalhost']
,网上搜了一下,还是有不少人遇到这个问题的,好多说ipv6什么的,但是我个人测试之后发现好像不是这个原因,也可能是我遇到的问题不同吧。
大家可以定位到这个文件 vendor\topthink\think-orm\src\db\connector\Mongo.php 大概 158行
原:
if (empty($config['dsn'])) {
$config['dsn'] = 'mongodb://' . ($config['username'] ? "{$config['username']}" : '') . ($config['password'] ? ":{$config['password']}@" : '') . $config['hostname'] . ($config['hostport'] ? ":{$config['hostport']}" : '');
}
上面是源代码。
修改之后:
if (empty($config['dsn'])) {
$config['dsn'] = 'mongodb://' . ($config['password'] ? ":{$config['password']}@" : '') . $config['hostname'] . ($config['hostport'] ? ":{$config['hostport']}" : '');
}
我这里主要是他配置MongoDB 连接地址的时候多拼接了一个 $config['username'] ,我是把他去掉了,然后就可以连接成功了,暂时不知道会不会影响到其他地方。希望能帮到大家!