Laravel 5 - 跳过迁移
Posted
技术标签:
【中文标题】Laravel 5 - 跳过迁移【英文标题】:Laravel 5 - skip migrations 【发布时间】:2016-05-09 00:27:47 【问题描述】:我已经迁移了一个现有的 Laravel 5 应用程序和数据库。只有没有迁移表,所以我使用以下命令创建了它:
php artisan migrate:install
在数据库迁移文件夹中存在三个文件(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' 将跳过这些脚本并选择新脚本?
【问题讨论】:
你看了吗laravel.com/docs/5.0/migrations#database-seeding 【参考方案1】:另一种方法是在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
2018-09-25 更新:
此Artisan CLI extension command 支持在 Laravel 5.4 或更高版本上迁移特定文件的单个命令:
# Install extension
composer require caloskao/migrate-specific
# Migrate
php artisan migrate:specific /path/to/migration_file.php
【讨论】:
【参考方案2】:创建迁移表后,插入这些记录:
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);
因此工匠会将这些迁移理解为“已执行”
【讨论】:
完美!现在的结果是:“没有什么可迁移的。”非常感谢! 向迁移表插入记录时,批次值(如上图1)应为下一个批次号。 谢谢!我已经插入了所有我已经完成的迁移并且它工作了,谢谢。 FWIW,我更喜欢从 0 开始,因为批处理值是数据库已迁移,并且出于任何原因migrations
表不存在或为空。
这是一个重要提示,它帮助我跳过了一些发生在我们环境中的一个数据库上的迁移。谢谢塞尔吉奥。以上是关于Laravel 5 - 跳过迁移的主要内容,如果未能解决你的问题,请参考以下文章