如何从 TransactionFailureException 中恢复?

How do I recover from TransactionFailureException?

应用在事务中途出错(线程被kill,导致ThreadDeath等),导致事务失败,但之后无法启动新的事务:

org.neo4j.kernel.api.exceptions.TransactionFailureException: 
Kernel has encountered some problem, please perform neccesary action (tx recovery/restart)

我应该采取什么行动来处理这个问题?

更新:我忘了说我以前遇到过这种类型的错误并设法(至少暂时)通过删除事务日志文件来修复它。但是现在,显然,neo4j 数据目录中根本没有任何 *nioneo* (IIRC) 文件!日志文件的位置或名称是否更改?或者我错过了什么?有 neostore.transaction.db.x 个文件,这些文件在 grepping 时似乎包含我的数据块。我确实启动了应用程序的新实例(幸运的是这是一个测试),所以我现在无法检查它,但是如果我删除它们,我是否能够从以前的状态重新启动应用程序?

Neo4j 2.2 的改进之一是事务日志的统一,这些现在在 neostore.transaction.db.x 中。

如果数据库不再启动,您可以尝试删除它们(但一定要保留备份副本)并重新启动数据库。但是,请事先尝试使用这些文件重新启动。如果事务日志的存在导致数据库无法启动,我会认为这是一个错误。