Goとdatabase/sqlパッケージを使用してリモートのmysqlデータベースに接続しようとしています。 go/mysqlのドキュメントがわかりにくいと思います。リモートホストに接続する方法の単一の例はないようです。誰もがlocalhostを使用するように。これまでのところ私はこれを持っています
import (
"database/sql"
_ "github.com/ziutek/mymysql/godrv"
db, err := sql.Open("mymysql", "tcp:"+dbHost*dbName+"/"+user+"/"+pass)
defer db.Close()
https://github.com/ziutek/mymysql のドキュメントに基づく
[PROTOCOL_SPECFIIC*]DBNAME/USER/PASSWD
//
// where protocol specific part may be empty (this means connection to
// local server using default protocol). Currently possible forms:
// DBNAME/USER/PASSWD
// unix:SOCKPATH*DBNAME/USER/PASSWD
// unix:SOCKPATH,OPTIONS*DBNAME/USER/PASSWD
// tcp:ADDR*DBNAME/USER/PASSWD
// tcp:ADDR,OPTIONS*DBNAME/USER/PASSWD
私も試しました
db, err := sql.Open("mymysql", "tcp:"+dbHost, dbName+"/"+user+"/"+pass)
そしてそれも機能していません。構文全体は不可解なようです。
これらのサイトはどちらも、Go SQLを理解するのに非常に役立ちます。 https://github.com/go-sql-driver/mysql/ (別のドライバーを使用している場合でも)および http ://go-database-sql.org/
役立つかもしれないものがいくつかあります:
sql.Open()
の接続文字列はDSN形式です。 db, err := sql.Open("mysql", "<username>:<pw>@tcp(<Host>:<port>)/<dbname>")
は、私の接続で機能します。 TCP接続の括弧の使用を確認してください。mysql.New()
があり、上記のフォーマットを使用して接続を開くことができます:db := mysql.New(proto, "", addr, user, pass, dbname)
sql.Open
_は実際には接続を開かず、dbリソースを作成するだけです。 db.Ping()
を実行して、機能していることを確認できます次の文は私のために働きます:
import (
"database/sql"
_ "github.com/go-sql-driver/mysql"
)
db, err := sql.Open("mysql", "db_user:password@tcp(localhost:3306)/my_db")
)