如何将 Google App Engine (Flex) Go 应用程序连接到 Google Cloud Postgres 实例
Posted
技术标签:
【中文标题】如何将 Google App Engine (Flex) Go 应用程序连接到 Google Cloud Postgres 实例【英文标题】:How to connect Google App Engine (Flex) Go app to Google Cloud Postgres instance 【发布时间】:2019-08-07 14:33:30 【问题描述】:我正在使用 Go 构建一个应用程序并使用 Google App Engine 进行部署。
我在 Google Cloud 上设置了一个 PostgreSQL 实例,启用了 API,并使用本地机器上的 SQL 代理成功连接到它,无论是从本地 PSequel 客户端还是从我的应用程序。
但是,当我执行 gcloud app deploy
时,我收到此错误:
ERROR: (gcloud.app.deploy) Error Response: [9]
Application startup error:
panic: dial unix /cloudsql/sapling:europe-west1:sapling/.s.PGSQL.5432: connect: no such file or directory
我已尝试将 Postgres 实例从版本 11 Beta 降级到 9.6。还尝试使用此驱动程序https://github.com/broady/gae-postgres,这看起来很有希望,但我无法为 flex 环境工作。
app.yaml
runtime: go
#Here we select the AppEngine Flex environment which performs a lot of the backend preparation for us including the ability to scale give the demand
env: flex
env_variables:
POSTGRES_CONNECTION: "user=postgres password=thisisntmypwd dbname=postgres host=/cloudsql/sapling:europe-west1:sapling"
manual_scaling:
instances: 1
#Select resource size
resources:
cpu: 1
memory_gb: 0.5
disk_size_gb: 10
beta_settings:
cloud_sql_instances: sapling:europe-west1:sapling=tcp:5432
config/db.go
package config
import (
"database/sql"
"fmt"
_ "github.com/lib/pq"
"os"
)
var Db *sql.DB
//Set up connection to the database
func init()
var err error
datastoreName := os.Getenv("POSTGRES_CONNECTION")
Db, err = sql.Open(
"postgres",
datastoreName,
)
if err != nil
panic(err)
err = Db.Ping()
if err != nil
panic(err)
fmt.Println("Connected to database")
【问题讨论】:
感谢您的帮助,我认为这是因为代码格式混乱。我现在已经解决了。或者还有什么你不喜欢的? 能否检查一下项目是否启用了 Cloud SQLAdmin API?如果之后仍然有错误,您可以使用标志 --verbosity=debug 再试一次吗?这可以为您提供有关错误的更多详细信息 谢谢@alan。我检查了。 Cloud SQL API 已启用,但未启用 Cloud SQLAdmin API。我启用了它,但似乎没有任何区别。还是同样的错误。使用详细标志运行但没有关于数据库连接的新信息,仍然与上述相同的错误 【参考方案1】:我在我的测试环境中复制了这个问题,发现您遇到的错误是由于 beta_settings 指定了端口。我在最后尝试了=tcp:5432
,它给了我同样的错误,然后我在没有它的情况下尝试了它,它被部署没有任何问题。
【讨论】:
是的,解决了它。非常感谢。我可以发誓不管有没有都试过了。那时我一定有其他问题,或者可能与未启用 Cloud SQLAdmin 有关。总之,修好了。以上是关于如何将 Google App Engine (Flex) Go 应用程序连接到 Google Cloud Postgres 实例的主要内容,如果未能解决你的问题,请参考以下文章
如何将 socket.io 部署到 Google App Engine?
如何将新服务部署到 Google App Engine 中的现有应用程序?
如何将 AJAX 与 Google App Engine (Python) 结合使用
如何将 Google App Engine (Flex) Go 应用程序连接到 Google Cloud Postgres 实例