Postgresqlでmigrationができない | Pendingされる時
PostgreSQLでRailsアプリを作成中に
「migrationエラー」が起きる問題
原因: すでにデータベースが作成されているのに、新たに同じデータベースを作成しようとすると起きる
結論:PostgreSQLを再起動して、migrationすれば解決
$ bin/rake db:reset
$ bin/rake db:migrate:reset
これでmigrationできる
migrationエラーの内容
# DBのDROP, CREATE, migrate を自動で実行するコマンド $ rails db:migrate:reset RAILS_ENV=development PG::DuplicateTable: ERROR: relation "comments" already exists
$ rails dp:drop PG::ObjectInUse: ERROR: database "app2ch_development" is being accessed by other users
- PostgreSQLを一度切断し、再度起動しないといけない
# データベースにログイン $ psql DB名 # 起動中のプロセスを特定する デーアベース名 = # select * from pg_stat_activity;
プロセス指定して、一個一個切るのはめんどいな
- PostgreSQLの停止方法
$ brew services stop postgresql # DB終了
- PostgreSQLの起動方法
$ brew services start postgresql # DB起動
PosgreSQLで強制的にデータベースを削除する方法
psql -l //データベース名を確認 psql postgres //postgreSQLにログイン \du //ユーザーと権限を確認 ps aux | grep 消したいDB名 // 消したいDB名のプロセスID(数字)を確認 sudo kill プロセスID //以下例 sudo kill 45912 # postgresqlだとエラーだったので、以下は権限ユーザに書き換え dropdb -U postgres(もしくは消す権限のもったユーザー) 消したいDB名
PostgreSQLでデータベースを作成する方法
# Ownerも指定 $ createdb MyApp_development -O MyApp $ createdb MyApp_test -O MyApp