登录
首页 >  Golang >  Go问答

与 postgreSQL 模式连接

来源:stackoverflow

时间:2024-04-20 10:06:36 449浏览 收藏

对于一个Golang开发者来说,牢固扎实的基础是十分重要的,golang学习网就来带大家一点点的掌握基础知识点。今天本篇文章带大家了解《与 postgreSQL 模式连接》,主要介绍了,希望对大家的知识积累有所帮助,快点收藏起来吧,否则需要时就找不到了!

问题内容

我正在寻找连接并查询 postgresql。但我只想连接到特定的架构

根据文档(jdbc),我们可以使用

jdbc:postgresql://localhost:5432/mydatabase?searchpath=myschema

更新 从 9.4 开始,您可以使用新的 currentschema 参数指定 url,如下所示:

jdbc:postgresql://localhost:5432/mydatabase?currentschema=myschema

但我无法使用 golang sql 驱动程序做到这一点;

根据文档,我们还可以使用 set search_path to myschema,public; 但我只想在初始化期间声明一次,但我认为每次新连接都需要执行此操作。

此外,我正在使用以下代码,请帮助我确定要传递给此代码的正确参数,以便仅与架构连接

db, err := sql.Open("postgres", `dbname=`+s.settings.Database+
` user=`+s.settings.Username+` password=`+s.settings.Password+
` host=`+s.settings.Url+` sslmode=disable`)

添加 currentschema=myschemasearchpath=myschema 不起作用!

有没有办法让我只能连接到 go 中的特定数据库模式


解决方案


您应该将 search_path=myschema 添加到 datasourcename

附注最好使用 fmt.sprintf("host=%s port=%d dbname=%s user=%s password='%s' sslmode=disable search_path=%s", ...) 而不是 ``+``

设置search_path是对的,你就做一次。即:

db, err := sql.Open("postgres",
    "host=localhost dbname=Test sslmode=disable user=postgres password=secret")
if err != nil {
   log.Fatal("cannot connect ...")
}
defer db.Close()
db.Exec(`set search_path='mySchema'`)

rows, err := db.Query(`select blah,blah2 from myTable`)
...

今天关于《与 postgreSQL 模式连接》的内容介绍就到此结束,如果有什么疑问或者建议,可以在golang学习网公众号下多多回复交流;文中若有不正之处,也希望回复留言以告知!

声明:本文转载于:stackoverflow 如有侵犯,请联系study_golang@163.com删除
相关阅读
更多>
最新阅读
更多>
课程推荐
更多>