🥚
データベースがロックされた時の対処法
張り切ってseedファイルにたくさん画像を入れたためにサーバーが重くなった時の画像のサイズ指定方法については、先日記事にさせていただきました。
サーバーが重くなると、更新や処理に時間がかかるだけでなく、データベースがロックされてしまうことがあります。
その場合、ターミナルに"database is locked"の文字が表示されているはずです。
そんな時、役に立つのがこのコマンドです。
$ ActiveRecord::Base.connection.execute("BEGIN TRANSACTION; END;")
seedファイルを編集していた時に何度もデータベースがロックされてしまい、その度にこのコマンドを打っていました。
メンターさんに聞きながらやったのですが、seedファイルの編集の時は一旦コマンドを打ったあと、
$ rails c
をして、ターミナルのここに
3.1.2 :001 > ActiveRecord::Base.connection.execute("BEGIN TRANSACTION; END;")
のコマンドを入れました。
seedファイル以外でデータベースがロックされてしまった時は、rails cはせずにコマンドを入力したら直りました。
seedファイルのデータベースがロックされたのは画像が多すぎたからなので、何度ロックを解除しても結局またロックされてしまいました。
最終的には画像の数を減らすことで対応しました。
90枚も入れていたのでロックされるのも納得です。なので、60枚に減らしました〜
Discussion