与postgreSQL模式连接
我希望连接并查询PostgreSQL。但我只想连接到特定的 根据文档(JDBC),我们可以使用与postgreSQL模式连接,postgresql,go,database-schema,Postgresql,Go,Database Schema,我希望连接并查询PostgreSQL。但我只想连接到特定的 根据文档(JDBC),我们可以使用 jdbc:postgresql://localhost:5432/mydatabase?searchpath=myschema 或者从9.4开始更新,您可以使用新的currentSchema参数指定url,如下所示: jdbc:postgresql://localhost:5432/mydatabase?currentSchema=myschema 但我无法使用golangSQL驱动程序实现这一点
jdbc:postgresql://localhost:5432/mydatabase?searchpath=myschema
或者从9.4开始更新,您可以使用新的currentSchema参数指定url,如下所示:
jdbc:postgresql://localhost:5432/mydatabase?currentSchema=myschema
但我无法使用golangSQL驱动程序实现这一点
根据文档,我们还可以使用设置搜索路径到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=myschema
或searchpath=myschema
无效
有没有一种方法我只能连接到GO中的特定数据库模式?Set Search\u路径正确,您只需执行一次。即:
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`)
...
您应该将
search\u path=myschema
添加到dataSourceName
另外,最好使用
fmt.Sprintf(“主机=%S端口=%d数据库名=%S用户=%S密码='%S'sslmode=禁用搜索路径=%S”,…)
而不是`+`
jdbc是java,而不是javago@Woot4Moo,我知道,这就是为什么我提到按照博士;如果不清楚,很抱歉,但是我已经提到了下面的代码片段。我尝试将这些currentSchema=myschema
添加到语句中,但它不起作用。我正在使用`db,err:=sql.Open(“postgres”,dbname=
+dbname+`user=+username+
password=+password+
主机=+host+
sslmode=disable)如果出错!=nil{panic(“主数据库连接失败”)}db.SetMaxIdleConns(40)db.SetMaxOpenConns(160)
所以有很多并行连接,我怀疑或者你能解释我会执行这个db.Exec(
set search\u path='mySchema')
会为每个连接设置模式吗?@AbhishekSoni你在用不同的方式写我做的事情。每个连接都需要一次exec。就像每个连接需要打开()一样,每个数据库需要执行一次。我对连接的功能感到困惑,但确实想知道db.Exec(
set search\u path='mySchema')
是每个打开需要一次,而不是每个连接需要一次(例如,我将maxConns设置为40,所以需要执行40次)?你为什么不直接测试看看?@AbhishekSoni你应该使用一个事务