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 关注
- 194 浏览
添加回答
举报
0/150
提交
取消