【rails】rails db:resetをする手順

# はじめに

複数人で共同開発をしていて、テーブルのカラムの追加や型の変更などをしていたところ、
スキーマファイルでコンフリクトが起きてしまったのでリセットしてしまおうという流れです。

備忘録として手順を残しておきます。

## 1.マイグレーションファイルの中身を整理する

removeやaddしたマイグレーションファイルをcreateにまとめる。

<img width="441" alt="dbresetスクショ.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/442023/51a381bb-9efa-6120-9908-9f3aebce7eec.png">
↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓
<img width="431" alt="dbresetスクショ2.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/442023/023dc23f-9fd1-efce-7893-2f6c6d01fa0e.png">


## 2.rails db:reset

```:開発環境ターミナル
$ rails db:reset

```
テーブル内容が正しく変更されていることを確認。


## 3.リモートへpush、merge

## 4.本番環境でrails db:reset


```:本番環境ターミナル
[ec2-user@ip-172-31-43-73 ~]$ cd /var/www/freemarket_sample_57b
[ec2-user@ip-172-31-43-73 freemarket_sample_57b]$ git pull origin master

[ec2-user@ip-172-31-43-73 freemarket_sample_57b]$ RAILS_ENV=production DISABLE_DATABASE_ENVIRONMENT_CHECK=1 bundle exec rake db:drop
Dropped database 'freemarket_sample_57b_production'
[ec2-user@ip-172-31-43-73 freemarket_sample_57b]$ rake db:create RAILS_ENV=production
Created database 'freemarket_sample_57b_production'
[ec2-user@ip-172-31-43-73 freemarket_sample_57b]$ rake db:migrate RAILS_ENV=production

```

次に、mysqlへログインして正しくテーブルが作られているかを確認します。
※SQLは最後に**;**(セミコロン)を忘れないように注意。


```:本番環境
[ec2-user@ip-172-31-43-73 freemarket_sample_57b]$ mysql -u root -p
Enter password:
mysql> show databases;
+----------------------------------+
| Database                         |
+----------------------------------+
| information_schema               |
| freemarket_sample_57b_production |
| mysql                            |
| performance_schema               |
+----------------------------------+
4 rows in set (0.00 sec)
mysql> use freemarket_sample_57b_production;

mysql> show tables;
+--------------------------------------------+
| Tables_in_freemarket_sample_57b_production |
+--------------------------------------------+
| addresses                                  |
| ar_internal_metadata                       |
| cards                                      |
| categories                                 |
| items                                      |
| schema_migrations                          |
| users                                      |
+--------------------------------------------+
7 rows in set (0.00 sec)

mysql> show columns from users;
+------------------------+--------------+------+-----+---------+----------------+
| Field                  | Type         | Null | Key | Default | Extra          |
+------------------------+--------------+------+-----+---------+----------------+
| id                     | int(11)      | NO   | PRI | NULL    | auto_increment |
| nickname               | varchar(255) | NO   |     | NULL    |                |
| email                  | varchar(255) | NO   | UNI | NULL    |                |
| image                  | varchar(255) | YES  |     | NULL    |                |
| last_name              | varchar(255) | NO   |     | NULL    |                |
| first_name             | varchar(255) | NO   |     | NULL    |                |
| last_name_kana         | varchar(255) | NO   |     | NULL    |                |
| first_name_kana        | varchar(255) | NO   |     | NULL    |                |
| birthdate_year         | int(11)      | NO   |     | NULL    |                |
| birthdate_month        | int(11)      | NO   |     | NULL    |                |
| birthdate_day          | int(11)      | NO   |     | NULL    |                |
| phone_number           | varchar(255) | NO   |     | NULL    |                |
| introduce              | text         | YES  |     | NULL    |                |
| encrypted_password     | varchar(255) | NO   |     |         |                |
| reset_password_token   | varchar(255) | YES  | UNI | NULL    |                |
| reset_password_sent_at | datetime     | YES  |     | NULL    |                |
| remember_created_at    | datetime     | YES  |     | NULL    |                |
| created_at             | datetime     | NO   |     | NULL    |                |
| updated_at             | datetime     | NO   |     | NULL    |                |
+------------------------+--------------+------+-----+---------+----------------+
19 rows in set (0.01 sec)
```

正しいことを確認。

## 5.各メンバーにpullしてもらう

## 6.各メンバーもrails db:migrate:reset

```
kawaihironorinoMacBook-puro:freemarket_sample_57b kawaihironori$ rails db:migrate:reset
```

# 参考にさせて頂いた記事

[Rails5以降の本番環境でデータベースをresetする方法！](https://qiita.com/wacker8818/items/72d933f036ca0b75d124)