📘
【iOS】accessing build database "xxx": database is locked……でテストができなくなった
下記のエラーメッセージで、Xcode上でのテストが動かなくなって、ググっても出てこなかったので対処法を書いておきます。
なぜ発生したか
ターゲット分割して複数のテストターゲットがある状況で、XcodeGenのpreBuildScriptsにMockoloの実行を仕込んでいる環境で発生しました。
きっかけはよくわからないんですが、Xcode上でテスト実行した後にPCのシャットダウンすると発生しました(2回経験)。
かなりレアケースだとは思うんですが、このエラーメッセージでググるとFlutterの例しか出てこなくて困りました。
複数のビルドが、同じデータベースを使おうとして、競合状態になったというメッセージです。
対処法
最初クリーンビルドとか、中間ファイルの削除とか、エラーメッセージ中のディレクトリを削除したりとか試したんですが、復旧できませんでした。
とりあえず複数存在するMockoloの実行を削除して、1つだけ残したらテストビルドが成功するようになりました。
一度成功したら、削除したMockoloの実行を復活させても動くようになります。
あとは試せてはいないんですが、上位ターゲットでテストビルドする方法でも解決できる、というアドバイスをもらいました。
この競合状態が一度発生すると、キャッシュクリア系のよくやる対処法では解決できないので、初見だと解決のために数時間かかりました……
このエラーにハマる人は珍しいと思うのですが、そういう人にこの記事が参考になれば幸いです。
(了)
Discussion