📘

【iOS】accessing build database "xxx": database is locked……でテストができなくなった

2023/02/27に公開
1

下記のエラーメッセージで、Xcode上でのテストが動かなくなって、ググっても出てこなかったので対処法を書いておきます。

なぜ発生したか

ターゲット分割して複数のテストターゲットがある状況で、XcodeGenのpreBuildScriptsにMockoloの実行を仕込んでいる環境で発生しました。
きっかけはよくわからないんですが、Xcode上でテスト実行した後にPCのシャットダウンすると発生しました(2回経験)。
かなりレアケースだとは思うんですが、このエラーメッセージでググるとFlutterの例しか出てこなくて困りました。

複数のビルドが、同じデータベースを使おうとして、競合状態になったというメッセージです。

対処法

最初クリーンビルドとか、中間ファイルの削除とか、エラーメッセージ中のディレクトリを削除したりとか試したんですが、復旧できませんでした。

とりあえず複数存在するMockoloの実行を削除して、1つだけ残したらテストビルドが成功するようになりました。
一度成功したら、削除したMockoloの実行を復活させても動くようになります。
あとは試せてはいないんですが、上位ターゲットでテストビルドする方法でも解決できる、というアドバイスをもらいました。

この競合状態が一度発生すると、キャッシュクリア系のよくやる対処法では解決できないので、初見だと解決のために数時間かかりました……

このエラーにハマる人は珍しいと思うのですが、そういう人にこの記事が参考になれば幸いです。

(了)

Discussion

takehilotakehilo

あとは試せてはいないんですが、上位ターゲットでテストビルドする方法でも解決できる、というアドバイスをもらいました。

この方法で直りました、助かりました...!