Laravel 在生产服务器上迁移

Posted

技术标签:

【中文标题】Laravel 在生产服务器上迁移【英文标题】:Laravel migrate on production server 【发布时间】:2018-03-23 16:37:10 【问题描述】:

我正在使用 Laravel,作为部署例程的一部分,我有命令

RUN php artisan migrate

由于我在生产中,我收到错误

生产中的应用,命令已取消!

修复很简单:RUN php rankbot/artisan migrate --force 但我觉得这不是正确的方法吗?确保数据库架构始终保持最新的最佳方式是什么?

【问题讨论】:

--force 是正确的做法。 --force 标志可防止您在生产环境中意外运行迁移。就像你有 2 个 ssh 终端打开什么的。 如果使用 --force 进行迁移需要很长时间,并且在连接到服务器时互联网连接中断...会发生什么?可以用nohup吗? (nohup php artisan migrate --force) 【参考方案1】:

这是正确的方法。

当您在生产环境中运行迁移时,最好确定它将对您的数据库执行什么操作,因为某些操作可能无法回滚。

确认提示可以让你停下来三思而后行,以免造成伤害。

某些迁移操作具有破坏性,这意味着它们可能会导致 你会丢失数据。为了保护您不运行这些命令 针对您的生产数据库,系统将提示您输入 执行命令前的确认。强制命令 要在没有提示的情况下运行,请使用 --force 标志

https://laravel.com/docs/5.5/migrations#running-migrations

【讨论】:

必须考虑每种情况。如果您有 100 台服务器要更新,手动确认没有帮助。所以--force 是自动化部署的方式

以上是关于Laravel 在生产服务器上迁移的主要内容,如果未能解决你的问题,请参考以下文章

Laravel:+100 表...是不是使用迁移?

Laravel 迁移:删除特定表

laravel 'class not found' 生产错误

生产环境中的 Laravel 4.x 迁移

Laravel 5.5 使用生产数据库整合迁移

使用 Laravel 5 中的 --force 进行生产时,数据库卡在使用播种机迁移