mar-gitacount
@mar-gitacount (mar mar)

Are you sure you want to delete the question?

If your question is resolved, you may close it.

Leaving a resolved question undeleted may help others!

We hope you find it useful!

SQLSTATE[42S21]: Column already exists: 1060 Duplicate column name 'user_prf' (SQL: alter table `users` add `user_prf` varchar(255) not null default 'user_default.png' after `name`)

解決したいこと

新しいテーブル、create_sessions_tableをを追加したい。

困っている事

新しいテーブル,create_sessions_table.phpを追加するために、
php artisan migrateを実行したところ

SQLSTATE[42S21]: Column already exists: 1060 Duplicate column name 'user_prf' (SQL: alter table `users` add `user_prf` varchar(255) not null default 'user_default.png' after `name`)

テーブル重複されていると表示されエラーになるのでロールバックすれば良いと思い
以下を実行するも、それよりも前に作られたマイグレーションファイルのロールバックが実行され、'user_prf'は無視された状態でロールバックされてしまいます。
どうすれば'user_prf' テーブルがエラーにならずにmigtateできるでしょうか、、

php artisan migrate:rollback --step=2

ロールバックで適用したファイル

Rolling back: 2021_01_20_140834_change_aritcle_articles
Rolled back:  2021_01_20_140834_change_aritcle_articles (1.56ms)
Rolling back: 2020_12_29_161423_remove_article_title_from_articles_table
Rolled back:  2020_12_29_161423_remove_article_title_from_articles_table (61.82ms)
+------+------------------------------------------------------------+-------+
| Ran? | Migration                                                  | Batch |
+------+------------------------------------------------------------+-------+
| Yes  | 2014_10_12_000000_create_users_table                       | 1     |
| Yes  | 2014_10_12_100000_create_password_resets_table             | 1     |
| Yes  | 2019_08_19_000000_create_failed_jobs_table                 | 1     |
| Yes  | 2020_12_12_192229_create_votings_table                     | 1     |
| Yes  | 2020_12_23_191814_create_articles_table                    | 3     |
| Yes  | 2020_12_29_161423_remove_article_title_from_articles_table | 4     |
| Yes  | 2021_01_20_140834_change_aritcle_articles                  | 4     |
| No   | 2021_04_16_130836_add_column_to_user_prf_table ←ここをやり直したい            |       |
| No   | 2021_06_02_094739_create_sessions_table                    |       |
+------+------------------------------------------------------------+-------+
0

1Answer

エラーはフィールドが重複されていると書いてます。重複されているのはデーブルじゃありません。

マイグレーションファイルを書いて初めてマイグレーションした後、* 必ず *ロールバックも実行しエラーがあるかどうか確認するのがお勧めです。

今の状態では、直接データベースを直すしかありません。Navicat/Beaver とかデータベースマネジメントソフトやmysqlコマンドを利用してusersデーブルからuser_prfフィールドを削除するしか無いと思います。

0Like

Comments

  1. @mar-gitacount

    Questioner

    usersテーブル内のフィールドの一つがuser_prfだという事(エラー文に書いてありますが)を思い出したので、強硬手段としてusersテーブル以前までロールバックした後にphp artisan migrateしましたら、エラーが吐かれなくなりました。ありがとうございます。回答主様が仰る通り、mysqlコマンドでusersテーブルからuser_prfフィールドを削除した方が確実だったかもしれません。

Your answer might help someone💌