Как подключиться к GrapheneDb с помощью graphaware/neo4j-php-client?

Я прочитал инструкции на обоих https://github.com/graphaware/neo4j-php-client#installation-and-basic-usage и https://docs.graphenedb.com/docs/php

Хотя этот пример из документации GrapheneDb работает, он не использует PHP-клиент GraphAware Neo4j, он использует Neo4j Bolt PHP:

// Example for Bolt
$config = \GraphAware\Bolt\Configuration::newInstance()
->withCredentials('user', 'pass')
->withTimeout(10)
->withTLSMode(\GraphAware\Bolt\Configuration::TLSMODE_REQUIRED);

$driver = \GraphAware\Bolt\GraphDatabase::driver('bolt://hobby-my-graph-db.dbs.graphenedb.com:24786', $config);
$client = $driver->session();

Я нигде не могу найти работающий пример, я пробовал все, что угодно; Я дважды и трижды проверял строки подключения, я пробовал http, а также болт, я вошел в базу данных из браузера neo4j, поэтому я знаю, что учетные данные должны быть в порядке.

Вот как выглядит мой код:

/* GraphAware\Bolt\Configuration */
$config = Configuration::create()
->withCredentials('user', 'pass')
->withTimeout(10)
->withTLSMode(Configuration::TLSMODE_REQUIRED);    
        
/* GraphAware\Neo4j\Client\ClientBuilder */
$client = ClientBuilder::create()
->addConnection('bolt', 'bolt://hobby-my-graph-db.dbs.graphenedb.com:24787', $config)
->build();
    
$result = $client->run("CREATE (n:Person {name: 'Bob'}) RETURN id(n)");

Когда я пытаюсь запустить запрос, я получаю:

Exception 'GraphAware\Bolt\Exception\HandshakeException' with message 'Error receiving data'
in /path-to-project/vendor/graphaware/neo4j-bolt/src/Driver.php:165

У кого-нибудь есть полный рабочий пример подключения к GrapheneDb с использованием graphaware/neo4j-php-client?


person dataskills    schedule 07.08.2020    source источник


Ответы (2)


Болт-драйвер: По какой-то причине GraphAware\Neo4j\Client\Connection\Connection.php не использует конфигурацию, которую вы передаете методу GraphAware\Neo4j\Client\ClientBuilder->addConnection() (???). Он перестраивает конфигурацию, оставляя все, кроме имени пользователя и пароля. Итак, если для вашего соединения требуется режим TLS, как у меня, оно никогда не будет работать без изменения источника.

В GraphAware\Neo4j\Client\Connection\Connection.php:180 внутри метода buildDriver() я просто использую конфигурацию, которую я передал, которая является $this->config, вместо той, которую они перестраивают для вас. Работает как надо.

После переделки выглядит так: $this->driver = BoltGraphDB::driver($uri, $this->config);

(graphaware/neo4j-php-клиент 4.8.5)

person dataskills    schedule 07.08.2020

На самом деле, просто не используйте graphenedb, это отстой. Просто используйте https://neo4j.com/cloud/aura. Работает без всяких заморочек.

person dataskills    schedule 12.10.2020