##はじめに
学習中にサンプルアプリを作っては消すを繰り返していると、
ふと「フォルダ削除するだけでいいの?」と疑問に感じました。
調べてみると、、
フォルダを削除する前に、**DB(データベース)**を削除しなければいけないらしいです!
以下、2通りの方法をメモしておきます。
- DB削除 → アプリフォルダ削除
- アプリフォルダを削除してしまった後のDB削除方法
##環境
- macOS Catalina
- Ruby 2.7.2
- Rails 6.0.3
- PostgreSQL 13.1
#① DB削除 → アプリフォルダ削除
該当アプリのフォルダ内で
$ rails db:drop
親ディレクトリに移動して
$ rm -rf アプリ名
必ず上記①の手順で削除するのが良さそうです。
ここからは、もしもアプリフォルダを先に削除してしまった場合の方法です。
#② アプリフォルダを削除してしまった後のDB削除方法
$ psql -l (DB名を一覧表示
#実行結果(sampleアプリを削除したい場合)
List of databases
Name | Owner | Encoding | Collate | Ctype | Access privileges
-----------------------+-------+----------+---------+-------+-------------------
sample_development | user | UTF8 | C | C |
sample_test | user | UTF8 | C | C |
postgres | user | UTF8 | C | C |
template0 | user | UTF8 | C | C | =c/user +
| | | | | user=CTc/user
template1 | user | UTF8 | C | C | =c/user +
| | | | | user=CTc/user
(5 rows)
$ psql postgres (PostgreSQLにログイン
---
(postgres=#) \du (ユーザーと権限を確認
(postgres=#) \q (PostgreSQLからログイン
---
$ dropdb -U ユーザー名 消したいDB名
####※削除してはいけないDB(デフォルト)
postgres
template0
template1
私はこのデフォルトであろうpostgres
を削除してしまいました。。(大反省)
学習用のアプリばかりだったので、PostgreSQLをアンインストールしました。
再インストール後に確認すると、上記3つのDBは初めからありました!!
上記デフォルトを削除してしまった後の手順を、自戒の意を込めて記しておきます。
##アンインストール方法
$ ls /usr/local/Cellar/postgresql (インストール済みPostgreSQLバージョン確認
$ brew info postgresql (現時点の最新バージョン確認
$ brew uninstall --force postgresql (全てのバージョンをアンインストール
$ ls -l /usr/local/var/postgres (設定ファイル、ログ、データ等を表示
$ rm -rf /usr/local/var/postgres (設定ファイル、ログ、データ等も削除
その後のインストールは、初めてインストールした時と同様に。
##さいごに
学習中はサンプルアプリが増えていく一方でしたが、
私はこの方法で解決できました。
間違っているところがあればご指摘いただけるとありがたいです。
##参考記事
Ruby on Rails 削除関連まとめ
PostgreSQLで強制的にデータベースを削除する
[MacOS] PostgreSQL の全バージョンをアンインストールする方法 ~ Homebrew 編
PostgreSQLドキュメント「dropdb」