【问题标题】:How to run Laravel migrations on Google App Engine Standard after Deployment部署后如何在 Google App Engine Standard 上运行 Laravel 迁移
【发布时间】:2021-04-04 13:41:51
【问题描述】:

我将 Laravel 8Google App Engine Standard (GAE) 和 Google Cloud SQL 结合使用。 App Engine 和 Cloud SQL 之间的连接有效(在控制器中使用简单的 DB::query 进行了尝试),所以一切似乎都设置正确。

但是:我想在将 Laravel 应用程序部署到 GAE 后运行“php artisan migrate”。所以我尝试将以下内容添加到我的 composer.json

"post-install-cmd": [
    "@php artisan migrate  --no-interaction --force",
    "@php artisan cache:clear"
]

但是,当我部署应用程序时,运行迁移命令时会引发以下异常

In Connection.php line 678:
                                                                               
  SQLSTATE[HY000] [2002] Connection refused (SQL: select * from information_s  
  chema.tables where table_schema = forge and table_name = migrations and tab  
  le_type = 'BASE TABLE')                                                      

如你所见,它使用 db "forge",这是 Laravel 中环境变量 "DB_DATABASE" 的默认后备值。因此,当 composer 运行安装后方法时,app.yaml 中设置的 env_variables 似乎没有加载,这也会导致缺少数据库主机。这就是“连接被拒绝”异常的原因。

您知道我该如何解决这个问题,以便在 composer 运行 migrate 命令时加载正确的环境变量

【问题讨论】:

    标签: php laravel google-app-engine google-cloud-sql


    【解决方案1】:

    我知道这是一个迟到的答案,但我认为你遇到这个问题的原因有很多。

    1. Google Cloud Build 无法访问与 appengine 标准运行时相同的环境变量。
    2. Cloud build 和 appengine 运行时不运行可以运行 artisan 命令的传统 php-cli 工具。也许其他人可以指出我是否已经过时了。我之前尝试过通过路由运行工匠命令,但它不起作用。

    我们只是针对 prod 数据库在本地运行它们。不是最好的,但希望能有所帮助。

    【讨论】:

      猜你喜欢
      • 2017-05-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-05-25
      • 2018-08-31
      • 1970-01-01
      • 2020-11-23
      • 2020-04-19
      相关资源
      最近更新 更多