1、在 Docker 容器的启动脚本中,如果要强制迁移命令在没有提示的情况下运行,请使用 –force 参数

php artisan migrate --force

2、现阶段存在基于 LARAVEL MODULES 开发的模块,其中存在迁移文件,例:/Modules/ThemeStoreDB/Database/Migrations 。如图1

图1

3、在本地开发环境中,执行模块下的迁移文件,一般是运行命令:php artisan module:migrate ThemeStoreDB 。如图2

图2

PS E:\wwwroot\object> php artisan module:migrate ThemeStoreDB
Migrating: 2021_12_06_133918_create_theme_asset_table
Migrated:  2021_12_06_133918_create_theme_asset_table (0.11 seconds)
Migrating: 2021_12_13_145303_create_theme_asset_version_table
Migrated:  2021_12_13_145303_create_theme_asset_version_table (0.1 seconds)
Migrating: 2022_05_16_105847_create_theme_installation_table
Migrated:  2022_05_16_105847_create_theme_installation_table (0.07 seconds)
Migrating: 2022_05_16_134353_create_theme_installation_version_preset_table
Migrated:  2022_05_16_134353_create_theme_installation_version_preset_table (0.21 seconds)
Migrating: 2022_05_16_172815_create_theme_installation_task_table
Migrated:  2022_05_16_172815_create_theme_installation_task_table (0.12 seconds)

4、但是,模块数量过多,也不可能频繁地在启动脚本中增加对应模块的迁移命令。参考:module:publish-migration,发布模块的数据库迁移文件。如图3

图3

PS E:\wwwroot\object> php artisan module:publish-migration ThemeStoreDB

5、目录:/Modules/ThemeStoreDB/Database/Migrations 下的文件已经复制至目录:/database/migrations。如图4

图4

6、这样的话,在启动脚本中的执行迁移的命令就仅需要:php artisan migrate –force,而无需要任何变更。在本地环境中执行,无迁移可执行,符合预期。

PS E:\wwwroot\object> php artisan migrate
Nothing to migrate.
PS E:\wwwroot\object>

 

永夜