Joh*_*ohn 6 mysql go amazon-rds
我可以使用mysql -h ...命令连接到RDS实例,所以我知道它不是安全组问题.
我试过用:
sql.Open("mysql", "id:password@tcp(your-amazonaws-uri.com:3306)/dbname")
Run Code Online (Sandbox Code Playgroud)
在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...
它适用于我的本地数据库.
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()
Run Code Online (Sandbox Code Playgroud)
确保实际错误与导入问题无关(如issues 266)
检查(以确保您使用的是最新版本,如本期所示):
go version你的 Go 版本(在控制台中运行)如果错误不是直接出现在“打开”步骤中,而是在访问“行”时出现,请检查以下注释:
使用
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
Run Code Online (Sandbox Code Playgroud)