Laravel Migrate Specific File(s) from Migrations

LaravelLaravel 5MigrationLaravel 8

Laravel Problem Overview


Hi read all the included documentation here in https://laravel.com/docs/5.4/migrations.

Is there a way on how to migrate a certain migration file (1 migration only), cause right now every time there is a change I use php artisan migrate:refresh and all fields are getting reset.

Laravel Solutions


Solution 1 - Laravel

First you should create one migration file for your table like:

public function up()
    {
        Schema::create('test', function (Blueprint $table) {
            $table->increments('id');
            $table->string('fname',255);
            $table->string('lname',255);
            $table->rememberToken();
            $table->timestamps();
        });
    }

After create test folder in migrations folder then newly created migration moved/copied in test folder and run below command in your terminal/cmd like:

php artisan migrate --path=/database/migrations/test/

Solution 2 - Laravel

you should add the path to your migration file to refresh just this table and run

php artisan migrate:refresh --path=/database/migrations/fileName.php

Solution 3 - Laravel

Just look at the migrations table in your database, there will be a list of migration file name and batch number value.

Suppose you have following structure,

id     migration                                           batch

1      2014_10_12_000000_create_users_table                  1 
2      2014_10_12_100000_create_password_resets_table        1
3      2016_09_07_103432_create_tabel_roles                  1

If you want to just rollback 2016_09_07_103432_create_tabel_roles migration, change it's migration batch value to 2 which is highest among all and then just execute following.

php artisan migrate:rollback

Here only table with batch value 2 will be rolled back. Now, make changes to that table and run following console command.

php artisan migrate

Batch value in the migrations table defines order of the migrations. when you rollback, migrations that are latest or have highest batch value are rolled back at first and then others. So, you can change the value in database and then rollback a particular migration file.

Although it's not a good idea to change batch number every time because of relationship among the table structure, we can use this case for some cases where single table rollback doesn't violates the integrity among the tables.

Hope you understand.

Solution 4 - Laravel

if you use tab for autocomplete

php artisan migrate --path='./database/migrations/2019_12_31_115457_create_coworking_personal_memberships_table.php'

Solution 5 - Laravel

php artisan migrate --path=database/migrations/2020_04_10_130703_create_test_table.php

Note : > after --path no / before

Solution 6 - Laravel

You can run command like this

php artisan migrate --path=/database/migrations/2020_04_10_130703_create_test_table.php

Solution 7 - Laravel

You need to put the file(s) into a new directory (ex:selected) and then apply

php artisan migrate  --path=/database/migrations/selected

if you need rollback:

php artisan migrate:rollback  --path=/database/migrations/selected

Note:

php artisan migrate:refresh

this will rollback and then migrate all the migrations files in the default directory (/database/migrations)

Solution 8 - Laravel

php artisan help migrate

You will see the option: >--path[=PATH] The path to the migrations files to be executed

By the way, you can probably indicate the root folder of the file that you want to migrate:

php artisan migrate --path=/database/migrations/sample.php

Or, You can create a new folder in migrations, then migrate all the migration files you want inside it:

php artisan migrate --path=/database/migrations/new_folder

Solution 9 - Laravel

You can only run this command in your terminal

php artisan migrate --path=database/migrations/2020_10_01_164611_create_asset_info_table.php

After migrations you should put the particular file name. or if you have any folder inside migration then just add that folder name after the migration.

Like this

php artisan migrate --path=database/migrations/yourfolder/2020_10_01_164611_create_asset_info_table.php

I hope this will help you a lil bit. Happy Coding.

Solution 10 - Laravel

Get the actual file name and path of the migration and run the command like below

php artisan migrate --path=/database/migrations/2021_10_03_071450_create_reset_codes_table.php

Solution 11 - Laravel

If you want to create one and specific table. You can use this code. It works for laravel(5.x) versions.

php artisan migrate:refresh --path=/database/migrations/fileName.php

Solution 12 - Laravel

For Specific File run this command:

php artisan migrate:refresh --path="database/migrations/Your_Migration_File_Name_table.php"


Here --file= is for location of your file and migrate:refresh will empty your table data

If you want to empty all table's data from database then run
php artisan migrate:refresh command.

Solution 13 - Laravel

Just wanted to post another solution, which i think is worth mentioning.

  1. Find row with your migration name in migrations table and DELETE it. It should look like this: 2016_06_01_000001_create_oauth_auth_codes_table
  2. Remove your table from database e.g. DROP TABLE oauth_auth_codes
  3. Run php artisan migrate

It will migrate only the table you need, and won't touch anything else

Solution 14 - Laravel

Correction- remove slash before the database

$ php artisan migrate --path=database/migrations/migration.php

Solution 15 - Laravel

php artisan migrate --path=/database/migrations/fileName.php

You don't have to refresh for migration, because refresh means : Rollback all migrations and run them all again.

Solution 16 - Laravel

You can only rollback:

php artisan migrate:rollback

https://laravel.com/docs/5.4/migrations#rolling-back-migrations

You can specify how many migrations to roll back to using the 'step' option:

php artisan migrate:rollback --step=1

Some tricks are available here:

https://stackoverflow.com/questions/30287896/rollback-one-specific-migration-in-laravel

Solution 17 - Laravel

Delete the table and remove its record from migration table.

After that you just run migration again:

php artisan migrate

Solution 18 - Laravel

Specific Table Migration

php artisan migrate --path=/database/migrations/fileName.php

Solution 19 - Laravel

Or you can simply delete migration file name from your database, in "migrations" table and then run : php artitsan migration

Solution 20 - Laravel

You could try to use the --path= option to define the specific sub-folder you're wanting to execute and place specific migrations in there.

Alternatively you would need to remove reference and tables from the DB and migrations tables which isn't ideal :/

Solution 21 - Laravel

If you want to create another table, just create a new migration file. It'll will work.

If you create a migration named users_table with id, first_name, last_name. You can create a migration file like

    public function up()
    {
        Schema::create('users', function (Blueprint $table) {
            $table->increments('id');
            $table->string('first_name',255);
            $table->string('last_name',255);
            $table->rememberToken();
            $table->timestamps();
        });
    }
    public function down()
    {
        Schema::dropIfExists('users');
    }

If you want to add another field like "status" without migrate:refresh. You can create another migration file like "add_status_filed_to_users_table"

public function up()
{
    Schema::table('users', function($table) {
        $table->integer('status');
    });
} 

And don't forget to add the rollback option:

public function down()
{
    Schema::table('users', function($table) {
        $table->dropColumn('status');
    });
}

And when you run the migration with php artisan migration, just migrate the new migration file.

But if you add field "status" into the first migration file (users_table) and run migration. It's nothing to migrate. You need to run php artisan migrate:refresh.

Hope this help.

Solution 22 - Laravel

install this package

https://github.com/nilpahar/custom-migration/

and run this command.

php artisan migrate:custom -f migration_name

Solution 23 - Laravel

php artisan migrate --path=/database/migrations/fileName.php

Just follow the instruction execute this commant file name here should be your migration table name Example: php artisan migrate --path=/database/migrations/2020_02_21_101937_create_jobs_table.php

Solution 24 - Laravel

Just use the --path flag. You don't need to use rollback, refresh, or any other command. Example:

php artisan migrate --path=/database/migrations/migration_file_name.php

Solution 25 - Laravel

Solution 26 - Laravel

you can also migrate again migrated table but first you need to go in database migration table and delete row that specific migration name. and then hit php artisan migrate

Solution 27 - Laravel

Use: --path=database/migrations/your_migration_file_name.php

Examples:

php artisan migrate:refresh --path=database/migrations/your_migration_file_name.php

php artisan migrate:rollback --path=database/migrations/your_migration_file_name.php

php artisan migrate --path=database/migrations/your_migration_file_name.php

References: Genarate laravel migration

Solution 28 - Laravel

First you should to make the following commands:

Step 1:

php artisan migrate:rollback

Step 2:

php artisan migrate

Your table will be back in database .

Attributions

All content for this solution is sourced from the original question on Stackoverflow.

The content on this page is licensed under the Attribution-ShareAlike 4.0 International (CC BY-SA 4.0) license.

Content TypeOriginal AuthorOriginal Content on Stackoverflow
QuestionMartney AchaView Question on Stackoverflow
Solution 1 - LaravelAddWeb Solution Pvt LtdView Answer on Stackoverflow
Solution 2 - LaravelWissem SASSIView Answer on Stackoverflow
Solution 3 - LaravelSagar GautamView Answer on Stackoverflow
Solution 4 - LaravelDawam RajaView Answer on Stackoverflow
Solution 5 - LaravelfahdshaykhView Answer on Stackoverflow
Solution 6 - LaravelToscaView Answer on Stackoverflow
Solution 7 - LaravelAhmad ZahabiView Answer on Stackoverflow
Solution 8 - Laravelmanh quan nguyenView Answer on Stackoverflow
Solution 9 - LaravelSayandeep MajumdarView Answer on Stackoverflow
Solution 10 - LaravelDankyi Anno KwakuView Answer on Stackoverflow
Solution 11 - LaravelkayhanozturkView Answer on Stackoverflow
Solution 12 - LaravelTuhinView Answer on Stackoverflow
Solution 13 - LaraveltylikView Answer on Stackoverflow
Solution 14 - LaravelTCruzView Answer on Stackoverflow
Solution 15 - LaravelSergio ReisView Answer on Stackoverflow
Solution 16 - LaravelJedView Answer on Stackoverflow
Solution 17 - LaravelsskokoView Answer on Stackoverflow
Solution 18 - LaravelVishal VaghasiyaView Answer on Stackoverflow
Solution 19 - LaravelLasha ShoniaView Answer on Stackoverflow
Solution 20 - LaravelChris WBView Answer on Stackoverflow
Solution 21 - LaravelNguyen HoangView Answer on Stackoverflow
Solution 22 - LaravelAli HassanView Answer on Stackoverflow
Solution 23 - LaravelMithun RanaView Answer on Stackoverflow
Solution 24 - Laravelstephen strangeView Answer on Stackoverflow
Solution 25 - LaravelHasanView Answer on Stackoverflow
Solution 26 - LaravelfahdshaykhView Answer on Stackoverflow
Solution 27 - LaravelErielamaView Answer on Stackoverflow
Solution 28 - LaravelHabibur RahmanView Answer on Stackoverflow