LoginSignup
16

More than 5 years have passed since last update.

最近webページを作っている時によくわからないエラーが出てしまったので、その時の解決方法の一つをメモがてら書き残しておく。

動作環境

  • Mac OS High Sierra 10.13.3
  • postgres (PostgreSQL) 10.1
  • Rails 5.1.5

前提条件

今回の記事ではRailsPostgreSQLのインストール方法やセットアップについては省略します。

本記事で用いている用語

  • DB_name:データベースの名前

Railsの動作状況

データベースにテスト用のデータを流し込み、動作確認をした後で一旦データベースをリセットしようとした時に発生したエラーです。

bash
$ rails db:migrate:reset
PG::ObjectInUse: ERROR:  database "DB_name" is being accessed by other users
DETAIL:  There are 2 other sessions using the database.
...省略...

今回はこんなエラーが出た時の対処法の1つを紹介します。

対処法

この現象について調べていると様々な対処法を見つけたのでまずはこれらを試してみました。

db:reset

参考記事:rails db:migrate:resetできなかったのでrails db:resetした

db:migrate:resetはそもそもmigrateresetを一度にやるらしく、たまにエラーが出るらしい。そこでmigrateresetを別々に実行してみる。

bash
$ rails db:reset
PG::ObjectInUse: ERROR:  database "DB_name" is being accessed by other users
DETAIL:  There are 2 other sessions using the database.

なんか自分の場合は他に原因があるらしい。

強制策

参考記事:PostgreSQLで強制的にデータベースを削除する

これは接続しているデータベースに直接アクセスして、その中身を削除する方法です。

サーバーを閉じる

強制策が書かれた記事の中にヒントがありました。

他のユーザーがdetabaseにアクセスしてるから、そのデータベースは消せないよというエラー。

つまり先にログインしているやつらを追い出せということですね。
この時私はRailsサーバーを立ち上げたままにしていたのでそれを閉じてあげました。

^C- Gracefully stopping, waiting for requests to finish
=== puma shutdown: yyyy-mm-dd hh:mm:ss +0900 ===
- Goodbye!
Exiting

その後rails db:migrate:resetを実行します。

bash
$ rails db:migrate:reset

Dropped database 'DB_name'
...省略

とりあえず成功ですね!!
お疲れ様でした\\\٩( 'ω' )و ////

ちょっとした雑談

今回は初めて触ったRailsで思わぬエラーに遭遇してしまいましたが、なんとか自己解決につながりました。これからも少しづつ日々精進していきたいものです。

参考にした記事

rails db:migrate:resetできなかったのでrails db:resetした
PostgreSQLで強制的にデータベースを削除する

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
16