Erhnam
Erhnam

Reputation: 921

Laravel 5 - skip migrations

I have migrated an existing Laravel 5 application and database. Only no migrations table was there yet, so I created this with the following command:

php artisan migrate:install

Inside the database migration folders three files exist (2015_12_08_134409_create_tables_script.php, 2015_12_08_134410_create_foreign.php, 2015_12_08_134411_create_index.php)

When using 'php artisan migrate' the scripts inside the migrations folder are executed again. This is what I want to avoid. Is it possible to insert records in Laravel's migrations table, so these scripts will be skipped and new scripts will be picked up once 'php artisan migrate' is executed again?

Upvotes: 21

Views: 29398

Answers (2)

Calos
Calos

Reputation: 1942

Another way is just create a folder under database/migrations to put you want skip migrations, this method works for both files that have been migrated or not yet migrated.

# Execute commands in laravel project root folder
mkdir database/migrations/ignored
mv database/migrations/2018_08_14_000000_should_ignore_migration.php \
   database/migrations/ignored/

# Check migration has been skipped
php artisan migrate:status

2018-09-25 update:

This Artisan CLI extension command is support single command to migrate specific files on Laravel 5.4 or later:

# Install extension
composer require caloskao/migrate-specific

# Migrate
php artisan migrate:specific /path/to/migration_file.php

Upvotes: 16

Sergio Guillen Mantilla
Sergio Guillen Mantilla

Reputation: 1468

Once you have the migration table created, insert these records:

insert into migrations(migration, batch) values('2015_12_08_134409_create_tables_script',1);
insert into migrations(migration, batch) values('2015_12_08_134410_create_foreign',1);
insert into migrations(migration, batch) values('2015_12_08_134411_create_index',1);

So artisan will understand those migrations as 'executed'

Upvotes: 34

Related Questions