首页 > 解决方案 > Laravel 5 生产迁移——无法禁用迁移警告

问题描述

我正在尝试在生产模式下部署 Laravel 网站。该站点当前已部署,但我添加了一个数据库和一些迁移以及种子,迁移的部署失败。

日志向我显示迁移失败,因为生产模式显示了一个提示,上面写着

Migrating the database tables into your application
**************************************
*     Application In Production!     *
**************************************

 Do you really wish to run this command? (yes/no) [no]:
 > 

  Aborted  

我已经尝试通过在我的部署脚本中将“yes”输入到迁移命令中来解决这个问题,但它没有用。大概我可以将模式更改为不生产,但我认为这不是一个合适的解决方法。我还尝试使用“--force”标志进行迁移,但它并没有阻止警告。

部署脚本

cd /home/forge/default
git pull origin master
npm install --save-dev cross-env
npm install
composer require nesbot/carbon:1.26.3
composer require tcg/voyager
composer install --no-interaction --prefer-dist --optimize-autoloader
npm run development
echo "" | sudo -S service php7.2-fpm reload

if [ -f artisan ]
then
    php artisan config:cache
    php artisan voyager:install
    php artisan migrate --force
    php artisan db:seed --class=CategoriesTableSeeder --force
    php artisan db:seed --class=UsersTable --force
    php artisan db:seed --class=BlogPostsTableSeeder --force
fi

有谁知道我如何在生产中禁用此警告,或者为什么 force 选项不抑制此警告以便我可以运行迁移?

谢谢!

标签: laravel-5deploymentmigrationproduction-environment

解决方案


您也可以尝试使用该--no-interaction标志,但看起来您所拥有的 ( --force) 是正确的。您确定没有其他东西正在运行您的迁移,例如voyager:install自动运行迁移或post-install作曲家中的脚本吗?

也只是感兴趣,为什么要在 Forge 部署脚本中安装包。它们应该包含在package.lockorcomposer.lock文件中的 repo 中,因此您只需要运行install.


推荐阅读