PG::ObjectInUse: ERROR:  database "myapp_development" is being accessed by other users

ポートフォリオ作成中

```ruby:db/seeds.rb
User.create!(name: "テスト 太郎",
             email: "test@example.com",
             password: "foobar",
             password_confirmation: "foobar"
)

99.times do |n|
  name = Faker::Name.name
  email = "test#{n}@example.com"
  password = "foobar"
  User.create!(name: name,
               email: email,
               password: password,
               password_confirmation: password)
end
```

ページネーションを実装していくため
テスト用アカウントを作成しようとすると、
こんなエラーが出ました。

```
$ rails db:migrate:reset
```
を実行すると

```
PG::ObjectInUse: ERROR:  database "myapp_development" is being accessed by other users
DETAIL:  There is 1 other session using the database.
```
「myapp_debelopment」データベースは、他のセッションで使われているとのこと。


データベースはこのような構成

```ruby:config/database.yml

default: &default
  adapter: postgresql
  encoding: unicode
  host: db
  username: postgres
  password: password
  pool: 5

development:
  <<: *default
  database: myapp_development

test:
  <<: *default
  database: myapp_test
```

色々と調べていく中で
下記を参考にして、データベースを一度削除して
作成し直すことにしました。
https://stackoverflow.com/questions/46451472/unable-to-make-rake-dbdrop-work-in-development-with-rails-5-1-4

```
$ docker exec -it (コンテナ名) /bin/bash
```
コンテナの中に入ります。

```
$ rails db:drop
Dropped database 'myapp_development'
Dropped database 'myapp_test'
```

```
$ rails db:create
$ rails db:migrate
== 20200704040832 CreateUsers: migrating ======================================
-- create_table(:users)
   -> 0.0426s
== 20200704040832 CreateUsers: migrated (0.0432s) =============================

== 20200704043311 AddIndexToUsersEmail: migrating =============================
-- add_index(:users, :email, {:unique=>true})
   -> 0.0303s
== 20200704043311 AddIndexToUsersEmail: migrated (0.0307s) ====================

== 20200704043511 AddPasswordDigestToUsers: migrating =========================
-- add_column(:users, :password_digest, :string)
   -> 0.0026s
== 20200704043511 AddPasswordDigestToUsers: migrated (0.0031s) ================

== 20200705055948 AddRememberDigestToUsers: migrating =========================
-- add_column(:users, :remember_digest, :string)
   -> 0.0025s
== 20200705055948 AddRememberDigestToUsers: migrated (0.0027s) ================
$ rails db:seed
```

```
$ exit
```

これで、無事動きました！

おそらく、
最初にデータベースを作成した際に
コンテナに入って作成するのではなく、
ローカル環境から下記コマンドで実行したから？
作成したユーザーが異なってしまったのではないかと。。

```
＄ docekr-compose run web rails db:create
```



# 追記 (2020/7/20)
上記で書いたのは都度、データベースを削除する方法でしたが
下記方法でも行えることがわかりました。

```
$ docker container ls
```
動作しているコンテナを確認

```
3c9b72845b89   postgres  "docker-entrypoint.s…" 8 days ago   Up 6 days   5432/tcp    
```
コンテナのIDを指定して、コンテナを停止させる。

```
$ docker container stop 3c9b72845b89
```
あとは、本来やりたかった内容を実行するだけ


```
$ rails db:migrate:reset

== 20200704040832 CreateUsers: migrating ======================================
-- create_table(:users)
   -> 0.0426s
== 20200704040832 CreateUsers: migrated (0.0432s) =============================

== 20200704043311 AddIndexToUsersEmail: migrating =============================
-- add_index(:users, :email, {:unique=>true})
   -> 0.0303s
== 20200704043311 AddIndexToUsersEmail: migrated (0.0307s) ====================

== 20200704043511 AddPasswordDigestToUsers: migrating =========================
-- add_column(:users, :password_digest, :string)
   -> 0.0026s
== 20200704043511 AddPasswordDigestToUsers: migrated (0.0031s) ================

== 20200705055948 AddRememberDigestToUsers: migrating =========================
-- add_column(:users, :remember_digest, :string)
   -> 0.0025s
== 20200705055948 AddRememberDigestToUsers: migrated (0.0027s) ================
$ rails db:seed
```

そして、停止させていたコンテナを動かす。

```
$ docker container start 3c9b72845b89
```

これで大丈夫です！