Драйвер PHP MongoDB на виртуальном хостинге не подключается к атласу

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

$manager = new MongoDB\Driver\Manager("mongodb://admin:[email protected]: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 out: [соединение закрыто
вызов 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»] => строка (64)
«admin: [email protected]: 27017 /» [«cluster»] =>
массив (0) {}}

Я также попробовал следующее, но ошибки остаются прежними:

$manager = new MongoDB\Driver\Manager('mongodb://admin:[email protected]: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);

0

Решение

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

введите описание изображения здесь

Версия 3.6+ должна быть:

mongodb+srv://admin:[email protected]:27017/db?retryWrites=true

Это mongodb+srv:// и единственный адрес шарда с небольшими параметрами. Должен работать с mongodb-1.5. Если нет, попробуйте устаревшую версию:

3.4-версия должна быть (одной строкой):

mongodb://admin:[email protected]: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-адрес вашего сервера находится в белом списке в атласе.

1

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]