sqlite3_open()のドキュメントには次のように書かれています。
「データベース接続ハンドルは、エラーが発生した場合でも、通常*ppDbで返されます。」
これは、sqlite3_open()がSQLITE_OK以外のものを返し、null以外のデータベースハンドルを返す場合、sqlite3_open()を再試行する前にsqlite3_close()を使用する必要があることを意味しますか?
もしそうなら、これは、データベースがロックされているためにデータベースをランダムに開くことができないという問題を説明している可能性があります。