无法从App Engine连接到Postgres CloudSQL



我正在使用Go进行第一个应用程序引擎项目。我在云控制台内的同一项目中有一个云SQL实例和应用程序引擎。

我的app.yaml文件中有以下内容:

service: myservice
runtime: go
api_version: go1
env_variables:
  #for deploying
  #POSTGRES_CONNECTION: "user=postgres password=<redacted> dbname=my_database host=/cloudsql/myproject:us-west1:myserver"
  #for testing locally via cloud proxy
  POSTGRES_CONNECTION: "user=postgres password=<redacted> dbname=mydatabase sslmode=disable"

beta_settings:
  cloud_sql_instances: myproject:us-west1:myserver
handlers:
# All URLs are handled by the Go application script
- url: /.*
  script: _go_app

在代码中我打开连接:

datastoreName := os.Getenv("POSTGRES_CONNECTION")
db, err := sql.Open("postgres", datastoreName)

在我的本地计算机上,我已经设置了cloud_sql_proxy

./cloud_sql_proxy -instances=passio-nutrition-develop-bcb6:us-west1:nutrition-sqlite-source=tcp:5432

以及使用POSTGRES_CONNECTION设置用于本地测试,一切正常。

但是,当我设置用于部署的POSTGRES_CONNECTION并运行gcloud app deploy时,当我尝试达到端点时,我会收到一条错误消息:

{"Op":"dial","Net":"unix","Source":null,"Addr":{"Name":"/cloudsql/myproject:us-west1:myserver/.s.PGSQL.5432","Net":"unix"},"Err":{"Syscall":"socket","Err":1}}

我尝试了各种不同版本的POSTGRES_CONNECTION,包括将=tcp:5432添加到hostcloud_sql_instances的末尾,但我无法连接工作。

如果有人可以给我一些很棒的指针

确保您启用了云SQL Admin API,并且您的默认App Engrion Service帐户具有正确的IAM权限(它需要具有Cloud SQL Connect角色或更高(。

app.yaml

的示例

运行时:GO

api_version:go1

处理者:

url:/stylesheets

static_dir:样式表

url:/(。*。(gif | png | jpg(($

static_files:static/ 1

上传:static/.*。(gif | png | jpg($

url:/.*

脚本:_go_app

连接到postgresql

包装主

导入(

"数据库/SQL"

" FMT"

_" github.com/lib/pq"

(

const(

主机=" localhost"

port = 5432

用户=" postgres"

密码=" your-password"

dbname =" calhounio_demo"

(

func main(({

psqlinfo:= fmt.sprintf(" host =%s port =%d user =%s"

"password=%s dbname=%s sslmode=disable",
host, port, user, password, dbname)

db,err:= sql.open(" postgres",psqlinfo(

如果err!= nil {

panic(err)

}

defer db.close((

err = db.ping((

如果err!= nil {

panic(err)

}

fmt.println("成功连接!"(

}

相关内容

  • 没有找到相关文章

最新更新