簡體   English   中英

部署后如何在 Google App Engine Standard 上運行 Laravel 遷移

[英]How to run Laravel migrations on Google App Engine Standard after Deployment

我將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 命令時加載正確的環境變量嗎?

我知道這是一個遲到的答案,但我認為你遇到這個問題的原因有很多。

  1. Google Cloud Build 無法訪問 appengine 標准運行時擁有的相同環境變量。
  2. Cloud build 和 appengine 運行時不運行可以運行 artisan 命令的傳統 php-cli 工具。 也許其他人可以指出我是否已經過時了。 我之前嘗試過通過路由運行工匠命令,但它不起作用。

我們只是針對 prod 數據庫在本地運行它們。 不是最好的,但希望這會有所幫助。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM