Драйвер PHP MongoDB на виртуальном хостинге не подключается к атласу - PullRequest
0 голосов
/ 03 октября 2018

При подключении к уровню бесплатного атласа mongodb из общего хостинга с помощью драйвера mongodb 1.5.2 и попытке написать простой документ выдается следующая ошибка.Что я делаю не так?

$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);

Неустранимая ошибка: Uncaught MongoDB \ Driver \ Exception \ ConnectionTimeoutException: не найдено подходящих серверов: serverselectiontimeoutms timed: [соединение закрыто, вызов ismaster на 'test-shard-00-00-waf4c.mongodb.net:27017 '] в /Applications/AMPPS/www/mongodb/liveserver.php:63

Когда я var_dump $ manager, я получаю:

объект (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);

1 Ответ

0 голосов
/ 03 октября 2018

Строка подключения неверна.Существует две версии для новых и устаревших драйверов, обе версии предоставлены атласом:

enter image description here

Версия 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-адрес вашего сервера внесен в белый список в атласе.

...