【发布时间】:2018-10-04 00:43:14
【问题描述】:
使用 mongodb 驱动程序 1.5.2 从共享主机连接到 mongodb atlas 免费层并尝试编写简单文档会出现以下错误。我做错了什么?
$manager = new MongoDB\Driver\Manager("mongodb://admin:admin@test-shard-00-00-rbgc.mongodb.net:27017/db?ssl=false&replicaSet=test-shard-0&authSource=admin&serverSelectionTryOnce=false");
var_dump($manager);
$bulk = new MongoDB\Driver\BulkWrite;
$bulk->insert(['x' => 1]);
$manager->executeBulkWrite('db.collection', $bulk);
致命错误:未捕获 MongoDB\Driver\Exception\ConnectionTimeoutException:没有合适的 找到的服务器:serverselectiontimeoutms 超时:[连接关闭 在 'test-shard-00-00-waf4c.mongodb.net:27017' 上调用 ismaster] /Applications/AMPPS/www/mongodb/liveserver.php:63
当我 var_dump 得到 $manager 时:
对象(MongoDB\Driver\Manager)#1 (2) { ["uri"]=> 字符串(64) "admin:admin@test-shard-00-00-rbgc.mongodb.net:27017/" ["cluster"]=> 数组(0) { } }
我也尝试了以下方法,但错误始终相同:
$manager = new MongoDB\Driver\Manager('mongodb://admin:admin@pirat-shard-00-00-vegbq.gcp.mongodb.net:27017/db?ssl=falseweak_cert_validation=false');
$bulk = new MongoDB\Driver\BulkWrite;
$bulk->insert(['x' => 1]);
$bulk->insert(['x' => 2]);
$bulk->insert(['x' => 3]);
$manager->executeBulkWrite('db.collection2', $bulk);
【问题讨论】:
-
您可以从其他任何地方连接到它吗?
telnet test-shard-00-00-rbgc.mongodb.net 27017表示“提供节点名或服务名,或未知” -
@AlexBlex 我可以从我的本地机器连接到它,它在 mongoDB 或 libcrypto 中不使用 OpenSSL,而是使用 Secure Transport 和 Common Crypto。
-
您没有使用 ssl - 它在 url 中是
ssl=false,是吗?尝试关注php.net/manual/en/mongodb-driver-manager.construct.php并拆分连接字符串以匹配构造函数接口。 -
您是否尝试过使用它期望的参数创建管理器?
-
“一些”是什么意思?只有 3 个,并且您在问题中仅使用第一个,将所有内容都作为单个字符串。如果您尝试了其他任何方法,请根据您的尝试更新问题。
标签: php mongodb mongodb-query mongodb-php mongodb-atlas