При подключении к уровню свободного атласа 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);
Строка подключения неверна. Существует две версии для новых и устаревших драйверов, обе версии предоставлены атласом:
Версия 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-адрес вашего сервера находится в белом списке в атласе.
Других решений пока нет …