PHP MongoDB 共享主机上的驱动程序未连接到 atlas
PHP MongoDB Driver on shared hosting doesnt connect to atlas
使用 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);
Fatal error: Uncaught
MongoDB\Driver\Exception\ConnectionTimeoutException: No suitable
servers found: serverselectiontimeoutms timed out: [connection closed
calling ismaster on 'test-shard-00-00-waf4c.mongodb.net:27017'] in
/Applications/AMPPS/www/mongodb/liveserver.php:63
当我 var_dump $manager 我得到:
object(MongoDB\Driver\Manager)#1 (2) { ["uri"]=> string(64)
"admin:admin@test-shard-00-00-rbgc.mongodb.net:27017/" ["cluster"]=>
array(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);
连接字符串错误。新旧驱动有2个版本,两个版本都由atlas提供:
3.6+版本应该是:
mongodb+srv://admin:admin@test-shard-rbgc.mongodb.net:27017/db?retryWrites=true
它是 mongodb+srv://
和带有少量参数的分片的单个地址。它应该适用于 mongodb-1.5。如果没有,请尝试旧版:
3.4-版本应该是(一行):
mongodb://admin:admin@test-shard-00-00-rbgc.mongodb.net:27017,
test-shard-00-01-rbgc.mongodb.net:27017,
test-shard-00-02-rbgc.mongodb.net:27017
/db?ssl=true&replicaSet=Test-shard-0&authSource=admin&retryWrites=true
是mongodb://
,url中的副本集所有成员列表,参数中的副本集名称等
此外,请确保您的服务器的 IP 地址已在图集中列入白名单。
使用 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);
Fatal error: Uncaught MongoDB\Driver\Exception\ConnectionTimeoutException: No suitable servers found: serverselectiontimeoutms timed out: [connection closed calling ismaster on 'test-shard-00-00-waf4c.mongodb.net:27017'] in /Applications/AMPPS/www/mongodb/liveserver.php:63
当我 var_dump $manager 我得到:
object(MongoDB\Driver\Manager)#1 (2) { ["uri"]=> string(64) "admin:admin@test-shard-00-00-rbgc.mongodb.net:27017/" ["cluster"]=> array(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);
连接字符串错误。新旧驱动有2个版本,两个版本都由atlas提供:
3.6+版本应该是:
mongodb+srv://admin:admin@test-shard-rbgc.mongodb.net:27017/db?retryWrites=true
它是 mongodb+srv://
和带有少量参数的分片的单个地址。它应该适用于 mongodb-1.5。如果没有,请尝试旧版:
3.4-版本应该是(一行):
mongodb://admin:admin@test-shard-00-00-rbgc.mongodb.net:27017,
test-shard-00-01-rbgc.mongodb.net:27017,
test-shard-00-02-rbgc.mongodb.net:27017
/db?ssl=true&replicaSet=Test-shard-0&authSource=admin&retryWrites=true
是mongodb://
,url中的副本集所有成员列表,参数中的副本集名称等
此外,请确保您的服务器的 IP 地址已在图集中列入白名单。