Connect with postgreSQL schema

13,154

Solution 1

You should add search_path=myschema to dataSourceName

P.S. better use fmt.Sprintf("host=%s port=%d dbname=%s user=%s password='%s' sslmode=disable search_path=%s", ...) instead ``+``

Solution 2

Set Search_path is right and you do it once. ie:

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`)
...
Share:
13,154

Related videos on Youtube

Abhishek Soni
Author by

Abhishek Soni

Updated on June 08, 2022

Comments

  • Abhishek Soni
    Abhishek Soni almost 2 years

    I am looking to connect and query to a PostgreSQL. But I only want to connect to a particular Schema.

    As per the doc (JDBC) we can use

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

    or update As of 9.4 you can specify the url with the new currentSchema parameter like so:

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

    But I am unable to do so with golang SQL driver;

    As per the documents, we can also use SET search_path TO myschema,public; But I only want to declare it for once during initializing but I think this needs to be executed every time for new connection.

    Also I am using following code please help me identify the correct parameters to be passed to this in order to only connect with schema

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

    Adding currentSchema=myschema or searchpath=myschema is not working!

    Is there a way I can only connect to a particular database-schema in GO

    • Woot4Moo
      Woot4Moo almost 6 years
      jdbc is java, not go