如何从 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
中。
如果数据库不再启动,您可以尝试删除它们(但一定要保留备份副本)并重新启动数据库。但是,请事先尝试使用这些文件重新启动。如果事务日志的存在导致数据库无法启动,我会认为这是一个错误。
应用在事务中途出错(线程被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
中。
如果数据库不再启动,您可以尝试删除它们(但一定要保留备份副本)并重新启动数据库。但是,请事先尝试使用这些文件重新启动。如果事务日志的存在导致数据库无法启动,我会认为这是一个错误。