Railsチュートリアル第6章(第6版)-6.3.4 ユーザーの作成と認証- でデータベースに新規ユーザーを登録しようとすると、rollback transactionが動いて保存が取り消されてしまう。
やったこと① メッセージ内容を確認した
まず、よくメッセージ内容を確認した。すると、
ActiveRecord::StatementInvalid (SQLite3::BusyException: database is locked)
とあった。データベースがロックしてあるようだ。
やったこと② SQLite3のdatabase is lockedについて調べた
分からないことはさっさと検索する。すると以下の記事がヒットした。
引用:http://fanblogs.jp/scripts/archive/61/0
この記事によると、ファイル名を別名にしてコピーすることでロックが解除できるようだ。
よく分からないがやってみることにする。
やったこと③ データベースのファイルを別名にし、そのコピーを元の名前で作成した
記事に従って以下のコマンドを叩いてみた。
- mvコマンドを使ってロックされているSQLiteのデータベースファイルを別名にする。
$ mv development.sqlite3 bk.development.sqlite3
- cp -p コマンドを使って元と同じファイル日付で、元と同じファイル名としてコピーする。
$ cp -p dk.development.sqlite3 development.sqlite3
するとrollback transactionが表示されずに、新規ユーザーの登録に成功した。
まとめ
やったこと①②③の流れで解決できた。