socket:连接到cloudsql时不允许操作

时间:2017-07-01 17:19:48

标签: postgresql sockets google-app-engine go google-cloud-sql

尝试使用以下设置进行连接时,我在应用引擎上遇到socket:operation not permitted错误,但在使用cloud-sql-proxy时不会在本地出错。以下代码适用于本地但不适用于app引擎:

connString = "user=USER_NAME password=PASSWORD host=/cloudsql/INSTANCE_NAME dbname=DB_NAME"
DBCon, err2 = sql.Open("postgres", connString)

app引擎和云sql都在同一个项目中。有没有人对我失踪的东西有任何见解?

3 个答案:

答案 0 :(得分:1)

不幸的是,AppEngine标准尚不支持Cloud SQL + postgres:

"注意:不支持从App Engine标准环境应用程序到PostgreSQL实例的连接"

https://cloud.google.com/sql/docs/postgres/connect-app-engine

答案 1 :(得分:0)

我的App Engine项目使用MySQL,但理论上连接应该是相同的。这是我如何连接。如果这不适用于Postgres,请告诉我

connString := "@cloudsql(<your instance name as it appears in gcloud>)"
if appengine.IsDevAppServer() {
    connString = "@tcp(<instance ip:port)"
}
sqlUser := "<your user>"
sqlPass := "<your pass>"
connString = sqlUser + ":" + sqlPass + dsn

// connect main db
db, err := sqlx.Connect("mysql", dsn)
if err != nil {
    return nil, err
}

答案 2 :(得分:0)

NOTE: This is for mysql second version db

main.go

import (
    _ "github.com/go-sql-driver/mysql",
    "database/sql"
)

func InitDB() (err error, db *DB) {
    db, err = sql.Open("mysql", os.Getenv("SQL_STRING"))
}

SQL_STRING: 'username:password@cloudsql(project:region:instance_id)/db'

更多参考https://cloud.google.com/appengine/docs/standard/go/cloud-sql/reference