sql.Register("sqlWithHooks", sqlhooks.Wrap(r.Driver(), &Hooks{}))// Connect to the registered wrapped driverdb, err := sql.Open("sqlWithHooks", ":memory:")if err != nil { fmt.Println("error",err)}rows, err := db.Query("SELECT id,name,cid,dimension,price FROM table_name ")if err != nil { fmt.Println("inside the error .........................",err)}運行此代碼后,我收到連接信息字符串中“:內存:”之后缺少“=”的錯誤。誰能告訴我我在這里所做的有什么問題?
2 回答

梵蒂岡之花
TA貢獻1900條經驗 獲得超5個贊
的第二個參數sql.Open()
需要一個連接字符串。它具有以下形式:
fmt.Sprintf("host=%s port=%d user=%s password=%s dbname=%s sslmode=disable", host, port, user, password, dbname)
它包含打開與 Postgres 的連接所需的信息。

呼啦一陣風
TA貢獻1802條經驗 獲得超6個贊
sql.Open() 需要 2 個東西 'driverName' 和 'dataSourceName'。以sqlhooks為例,他們使用 sqlite 作為數據庫。除此之外,他們還使用了go-sqlite3,如果你仔細查看文件sqlite3.go的第 886 行。你會看到數據源名稱“:memory:”,這意味著我們選擇了 sqlite db 的內存利用。
'dataSourceName' 將根據選擇的數據庫而有所不同。它基本上意味著數據源名稱格式的連接字符串。
這有效的原因 fmt.Sprintf("host=%s port=%d user=%s password=%s dbname=%s sslmode=disable", host, port, user, password, dbname)
- 2 回答
- 0 關注
- 248 瀏覽
添加回答
舉報
0/150
提交
取消