我可以使用mysql -h ...
命令连接到RDS实例,所以我知道它不是安全组问题。
我试图使用:
sql.Open("mysql", "id:password@tcp(your-amazonaws-uri.com:3306)/dbname")
在go-sql-driver(https://github.com/go-sql-driver/mysql)的自述文件中,但它似乎无法正常工作。
我在RDS实例下使用我的用户名,而不是在这里使用id。
编辑:
返回的错误是:panic runtime error: invalid memory address or nil pointer deference [signal 0xb code=0x1 addr=0x20 pc=0x5b551e]
goroutine 16 [running]
runtime.panic(0x7d4fc0, 0xa6ca73)...database/sql.(*Rows).Next...
它适用于我的本地数据库。
答案 0 :(得分:1)
确保实际错误与导入问题无关(如issues 266
中所述)
检查(确保您使用的是最新版本,如this issue中所示):
go version
)如果错误不是直接在“打开”步骤中,而是在访问“行”时check this comment out:
使用
for
循环(for rows.Next() { ... }
)或类似的东西:
if rows.Next() {
// whatever
} else {
// catch error with rows.Err()
}
rows.Close() // <- don't forget this if you are not iterating over ALL results
答案 1 :(得分:0)
sql.Open()的连接字符串为DSN格式。
import (
"database/sql"
"fmt"
_ "github.com/go-sql-driver/mysql"
)
db, err := sql.Open("mysql", "<username>:<password>@tcp(<AWSConnectionEndpoint >:<port>)/<dbname>")
if err != nil {
fmt.Print(err.Error())
}
defer db.Close()