Neo4j Desktop を使っていると、データベースが起動できなくなる現象を確認した。
特定のバージョンのアップデートの時にそういった問題が起きるという情報も得た。
具体的には、データベースの起動時に以下のようなエラーメッセージがでる。
Database failed to start: DB [database-7fe95a79-ffc0-465e-9286-0b194cd6a394] 'v4.0.0' exited with status 'KILLED'. Check the logs
ログを見ると
エラー: メイン・クラスcom.neo4j.server.enterprise.EnterpriseEntryPointを検出およびロードできませんでした
原因: java.lang.ClassNotFoundException: com.neo4j.server.enterprise.EnterpriseEntryPoint
などと出ている。
対策
データベースを複製してみる
Neo4j Desktop では簡単にDBの複製ができるため、起動しないDBを複製して起動してみる。
データベースのバージョンをあげて見る
複製してみても起動できない場合、データベースのバージョンをあげて見る
新しいデータベースを作成する
それでもダメな場合、新しいデータベースを作成して必要なデータ復元して見る。
- データベースの停止
- 新しいデータベースの作成
- データファイルをコピペ
データファイルは以下
~/Library/Application Support/Neo4j Desktop/Application/neo4jDatabases/database-xxx/installation-x.x.x/data
にあるディレクトリ
- databases
- dbms
- transactions
がそれなので、コピーしたいDBの database-xxx
以下のdata フォルダをコピー先の新しいDBの database-xxx
以下のdataにコピーする。
Neo4j Desktop を初期化する
私の場合は、バージョンをあげようとしたら、バージョンアップ自体にも失敗してしまった。
新しいデータベースを作成しようとすると、パスワード設定時に「パスワードを変更できない」というエラーになり作成もできなかった。
おそらく、フォルダの権限的な部分でファイル書き込みに失敗しているように見えた。
最終手段として Neo4j Desktop の初期化をして復活した。
以下手順
- 全てのデータベースを停止
- Neo4j Desktop を停止
-
~/Library/Application Support/Neo4j Desktop
を移動してバックアップ - Neo4j Desktop を再度起動。これにより新たに
~/Library/Application Support/Neo4j Desktop
が作成される - Neo4j Desktopから新しいDBを作成
- バックアップした data フォルダを新しいDBのdataフォルダに移植
これでなんとか事なきを得ました。