尝试使用以下设置进行连接时,我在应用引擎上遇到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都在同一个项目中。有没有人对我失踪的东西有任何见解?
答案 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