2
5

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

既存のDBからマイグレーションファイルを作成する

Posted at

Laravelのバージョン

php artisan --version
Laravel Framework 9.17.0

"kitloong/laravel-migrations-generator"をインストール

composer require "kitloong/laravel-migrations-generator"

migrate:generate を実行

 php artisan  migrate:generate

マイグレーションファイルが生成された
image.png
テスト用DBにマイグレーションを実行すると以下のエラーが発生

php artisan migrate --env=testing

Fatal error: Cannot declare class CreatePersonalAccessTokensTable, because the name is already in use in /opt/database/migrations/2022_07_03_085626_create_personal_access_tokens_table.php on line 7

In 2022_07_03_085626_create_personal_access_tokens_table.php line 7:

  Cannot declare class CreatePersonalAccessTokensTable, because the name is already in use  

sancumのライブラリに同じクラス名が使われていたので、自前のマイグレーションファイルに含まれるとクラス名がかぶってエラーになる様子
vendor/laravel/sanctum/database/migrations/2019_12_14_000001_create_personal_access_tokens_table.php
migrate:generate で生成された 2022_07_03_085626_create_personal_access_tokens_table.php を削除してから再度実行
今度は正常に実行された

php artisan migrate --env=testing

Migrating: 2019_12_14_000001_create_personal_access_tokens_table
Migrated:  2019_12_14_000001_create_personal_access_tokens_table (270.76ms)
・・・
Migrating: 2022_07_03_085626_create_failed_jobs_table
Migrated:  2022_07_03_085626_create_failed_jobs_table (164.55ms)
Migrating: 2022_07_03_085626_create_password_resets_table
Migrated:  2022_07_03_085626_create_password_resets_table (161.97ms)
Migrating: 2022_07_03_085626_create_users_table
Migrated:  2022_07_03_085626_create_users_table (110.53ms)
Migrating: 2022_07_03_085627_add_foreign_keys_to_article_category_table
Migrated:  2022_07_03_085627_add_foreign_keys_to_article_category_table (386.56ms)

migrate:generate で生成された 2022_07_03_085626_create_personal_access_tokens_table.php を削除していたものの、personal_access_tokens のテーブル自体は作成されていた。
 
migrations テーブルを見るとsancumに含まれていたファイル名で実行されている形跡がある
image.png
試しに vendor以下のマイグレーションファイルを削除するとpersonal_access_tokens テーブルが作成されなかった。
おそらくmigrate実行時にvendor以下のライブラリ等に含まれるマイグレーションファイルも読み込んで実行してくれるものと思われる

2
5
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
5

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?