Laravel 5 - 跳过迁移

Erh*_*nam 13 php laravel

我已经迁移了现有的Laravel 5应用程序和数据库.目前还没有迁移表,所以我使用以下命令创建了它:

php artisan migrate:install
Run Code Online (Sandbox Code Playgroud)

在数据库迁移文件夹中存在三个文件(2015_12_08_134409_create_tables_script.php,2015_12_08_134410_create_foreign.php,2015_12_08_134411_create_index.php)

使用'php artisan migrate'时,将再次执行迁移文件夹中的脚本.这是我想要避免的.是否可以在Laravel的迁移表中插入记录,因此一旦'php artisan migrate'再次执行,将跳过这些脚本并拾取新脚本?

Ser*_*lla 19

创建迁移表后,插入以下记录:

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);
Run Code Online (Sandbox Code Playgroud)

因此,工匠会将这些迁移理解为"已执行"

  • 当将记录插入迁移表时,批次值(例如上面的1)应该是下一个批次号。 (2认同)

Cal*_*Kao 9

另一种方法是在下面创建一个文件夹database/migrations以放置要跳过的迁移,此方法适用于已迁移或尚未迁移的两个文件。

# 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
Run Code Online (Sandbox Code Playgroud)

2018-09-25更新:

Artisan CLI扩展命令是单个命令,用于迁移Laravel 5.4或更高版本上的特定文件:

# Install extension
composer require caloskao/migrate-specific

# Migrate
php artisan migrate:specific /path/to/migration_file.php
Run Code Online (Sandbox Code Playgroud)