This question already has answers here: Running one specific Laravel migration (single file) (20 answers) Closed 4 years ago.
I create on address table migration but one migration is already in the database it gives following error :
Base table or view already exists: 1050 Table 'notification' already exists
So, Can I run specific migration? How can I run in Laravel?
TLDR;
"By the book":
If there are already migrated tables and there is some data stored in those tables, be careful with php artisan migrate:refresh
. You will lose all your data!
For this specific question OP has already run the migration and by the book if he wants to run the same migration again, then first he should rollback with php artisan migrate:rollback
. This will undo the last migration/s.
Then you can run php artisan migrate
and all NOT migrated migrations will be migrated.
If you created more migrations and they are not migrated yet, to run only a specific migration use this:
php artisan migrate --path=/database/migrations/full_migration_file_name_migration.php
And sometimes if there is something messed up and you get errors on migrate, saying that the table already exists you can manually delete that specific entry from migrations
AND the table which causes the problem in your DB and run php artisan:migrate
to recreate the table.
Success story sharing
.php
extension inpath
likephp artisan migrate --path=/database/migrations/my_migrations.php
Nothing to migrate.
to me. Why? Does the migration need to be already on the migrations tables? I tried with one already there too and it gave the same thing. Is this path my full path to the file or is it relative to my app's root? Edit: also tried with the full path and it says the same thing.--path=path/to/specific_migration
didn't work for me, I had to adopt the other strategy of moving the specific files into a subfolder, then run--path=path/to/subfolder
, it is a big shortcoming. Watch out though:migrate:reset
will ignore --path !migrate
usemigrate:refresh
, that'll work. For example, it will bephp artisan migrate:refresh --path=/database/migrations/my_migrations.php