Любите стек, Мой первый пост из полного разочарования. Спасибо за ваши комментарии!Подключение к CloudSQL из App Engine (второе поколение CloudSQL) GO
- создал приложение Project Engine
- создания второго поколения MySQL Instance в моем App Engine Project
- создания базы данных в MySQL Instance
- В App Engine, я активировать -> Google Cloud Shell < - -. (Я работаю в командной строке на моей консоли.cloud.google.com)
Я скопировал эту базовую программу GO для подключения к моему экземпляру MySQL.
Я строю его и запускаю. go build mysqlexample.go ./mysqlexample
Я не смог добиться успешного соединения. Вы можете увидеть все различные строки подключения, которые я пробовал, и справа от них - ответ, который я получаю.
Я могу подключиться к локальной машине Windows с помощью mysql admin.
Помогите?
package main
import (
"database/sql"
_ "github.com/go-sql-driver/mysql"
"log"
)
func main() {
const dbIP = "104.xxx.xx.x"
const dbInstanceName = "esp-1-dev:us-central1:espdev"
const dbName = "servpro"
const dbUserName = "root"
const dbPassword = "xxxxxxx"
const dbOpenString = dbUserName + ":" + dbPassword + "@/" + dbInstanceName + "/" + dbName //GETS RESPONSE default addr for network 'AppEngine:Zone:Project' unknown
//const dbOpenString = dbUserName + "@cloudsql(" + dbInstanceName + ")/" + dbName //GETS RESPONSE dial cloudsql: unknown network cloudsql
//const dbOpenString = dbUserName + "@/" //+ "?parseTime=true&loc=UTC" //GETS RESPONSE getsockopt: connection refused
//const dbOpenString = dbUserName + ":" + dbPassword + "@tcp(" + dbIP + ":3306)/" + dbName //GETS RESPONSE dial tcp 104.xxx.xxx.x:3306: getsockopt: connection timed out
// Got this from stack overflow. GoDocs are not updated to reflect 2nd Gen databases.
// http://stackoverflow.com/questions/38890022/tls-requested-but-server-does-not-support-tls-error-with-google-cloud-sql-2nd
//user:[email protected](copiedPastedInstanceConnectionName)/databaseName?charset=charset&collation=collation&tls=tlsConfigName&parseTime=true
//First Generation Connection String
//username:[email protected](appID:CloudSQLInstance)/databasename?parseTime=true&loc=UTC
db, err := sql.Open("mysql", dbOpenString);
defer db.Close()
log.Println("Attempting Ping of database....")
err = db.Ping()
if err != nil {
log.Println("db.Ping() failed: " + dbOpenString)
log.Println(err)
} else {
log.Println("Success!")
}
}
Вы не сказали, если вы подключаетесь из App Engine Standard или App Engine Flex. Я подозреваю, что вы подключаетесь из App Engine Flex, но просматриваете документы/сообщения App Engine Standard. Пожалуйста подтвердите. – Vadim
Я работаю в облачной оболочке Google. Сделайте программу, создайте ее, запустите. У меня пока нет возможности использовать Flex до тех пор, пока я не разберу это решение и не добавлю его в yaml. Я работаю над этой облачной средой, поскольку я работаю над всеми примерами GO. Теперь я хочу поговорить с облаком sql и застревать. Теперь я думаю, что сражаюсь с облачной оболочкой google. Я развожу свое приложение и включу flex сегодня вечером и опубликую результаты. Строки подключения ниже не работают в облачной оболочке, но, по крайней мере, строка гибкого соединения дает мне новое сообщение ... нет такого каталога файлов. –
. Вы должны сделать это более понятным в своем сообщении. В этом случае вы не должны ** следовать инструкциям App Engine, поскольку они предназначены для подключения из App Engine. Соединение с облачной оболочкой несколько сложнее, вам нужно будет загрузить и запустить Cloud SQL Proxy в оболочке, чтобы подключиться (используя ту же строку подключения, которую я отправил из App Engine Flex) – Vadim