2016-09-04 6 views
0

私はgraphaware/neo4j-php-client 4.5.1をPHP 5.6.24でNeo4j 3.0.4とともに使用しています。neo4j-php-clientで失敗したトランザクションを検出する方法

トランザクションが失敗したかどうかを調べる方法はわかりません。

たとえば、まだ関係があるノードを削除しようとします。私はこの単純なクエリでDELETEを実行する場合:

[GraphAware\Neo4j\Client\Exception\Neo4jException] 
    org.neo4j.kernel.api.exceptions.ConstraintViolationTransactionFailureException: 
    Cannot delete node<31>, because it still has relationships. 
    To delete this node, you must first delete its relationships. 

しかし、私はトランザクション内の同じクエリラップ:

$client->run 
(
    'MATCH (node { name: {name} }) DELETE node', 
    [ 'name' => 'Fred' ] 
); 

...私は私が期待される動作である、この例外を取得します

$transaction = $client->transaction(); 

$transaction->push 
(
    'MATCH (node { name: {name} }) DELETE node', 
    [ 'name' => 'Fred' ] 
); 

$results = $transaction->commit(); 

foreach ($results as $result) 
{ 
    $summary = $result->summarize(); 
    $stats = $summary->updateStatistics(); 
    printf("Nodes deleted: %d\n", $stats->nodesDeleted()); 
} 

printf("Transaction status: %s\n", $transaction->status()); 

...のNeo4jは、ノードを削除しませんが、私はこの(成功を示唆)の代わりに例外を参照してください。

0123を

何かが見つからない、またはこれがバグですか?前もって感謝します!

答えて

1

おかげで、

これは実際にはバグであると私は、この修正プログラムを含む、4.5.3バージョンは数分でpackagistに利用可能であるべきであるhttps://github.com/graphaware/neo4j-php-client/commit/af8f01475a3cf63549498449574eb9c4bb8e7254

でそれを修正しました。

テストして報告してください。

+0

優れており、4.5.3で期待どおりに動作します!非常に速い応答とソリューションをありがとう! –

関連する問題