Transactions 事务错误处理不工作Neo4jphp

Transactions 事务错误处理不工作Neo4jphp,transactions,cypher,neo4jphp,neo4j,Transactions,Cypher,Neo4jphp,Neo4j,我试图在neo4j事务中使用$transaction->isError()和$transaction->isClosed,但这些函数未能捕获错误 下面是我的代码,我在提交后执行了事务回滚,根据文档,这应该会产生一个错误,应该由isClosed()处理,但它从未处理过错误,而是产生了错误 代码 错误 但实际上,这个错误应该由$transaction->isClosed()处理,但它没有 请帮助,提前感谢提交后无法回滚。提交关闭事务,因此尝试回滚会抛出错误 在commit之后,您不需要回滚。如果添加

我试图在neo4j事务中使用
$transaction->isError()
$transaction->isClosed
,但这些函数未能捕获错误

下面是我的代码,我在提交后执行了事务回滚,根据文档,这应该会产生一个错误,应该由
isClosed()
处理,但它从未处理过错误,而是产生了错误

代码 错误 但实际上,这个错误应该由
$transaction->isClosed()处理,但它没有


请帮助,提前感谢

提交后无法回滚。提交关闭事务,因此尝试回滚会抛出错误


commit
之后,您不需要
回滚
。如果添加的任何语句失败,将在服务器上自动回滚。如果您的应用程序需要手动回滚事务,您只需调用
rollback
,您应该在提交之前执行此操作。

我如何知道事务有错误并且已回滚?我还应该如何手动回滚?如果在同一个应用程序中有多个数据库,那么如果其中任何一个数据库出现故障,我必须回滚Neo4j和其他数据库中的整个事务。所以在neo4j中,我如何知道条件语句中失败的事务。失败的语句将抛出和异常。另外,您可以通过调用
$transaction->isError()
查看给定事务是否有错误。如果有多个数据库,则应分别检查每个连接是否存在错误,并仅回滚未失败的连接。失败的一个将已在服务器上回滚。这里的相关文档:当neo4j崩溃时,neo4j将自动回滚,但它不会由$transaction->isError()处理,因此我无法回滚我的其他数据库,因为$transaction->isError()返回false,然后将回滚调用包装在try-catch块中。但我更关心的是数据库为什么会崩溃。先把它修好。
require("vendor/autoload.php");
        use Everyman\Neo4j\Cypher\Query;
        $client = new Everyman\Neo4j\Client();

        $transaction = $client->beginTransaction();

        $queryA = new Query($client, 'CREATE (n:testing{id:189})');
        $result = $transaction->addStatements($queryA);
        $transaction->commit();
        $transaction->rollback(); // performing rollback after commit
if ($transaction->isClosed()) {
    echo "No more statements can be added!";
}
Fatal error: Uncaught exception 'Everyman\Neo4j\Exception' with message 'Transaction is already closed' in C:\xampp\htdocs\feed\vendor\everyman\neo4jphp\lib\Everyman\Neo4j\Transaction.php on line 149