如何在部署后在谷歌应用引擎标准上运行Laravel迁移



我正在使用Laravel 8谷歌应用程序引擎标准(GAE(和谷歌云SQL。App Engine和Cloud SQL之间的连接是有效的(在控制器中用一个简单的DB::query进行了尝试(,所以一切似乎都设置正确。

但是:我想跑步php artisan migrate";在我将Laravel应用程序部署到GAE之后。因此,我尝试将以下内容添加到我的composer.json中:

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

但是,当我部署应用程序时,运行migrate命令时会抛出以下异常

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')                                                      

正如你所看到的,它使用数据库";锻造";这是Laravel中环境变量"的默认回退值;数据库";。因此,当composer运行安装后方法时,app.yaml中设置的env_variables似乎没有加载,这也会导致缺少数据库Host。所以这就是";连接被拒绝";例外

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

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

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

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

最新更新