代码之家  ›  专栏  ›  技术社区  ›  marcosbeirigo

用JDBC连接postgres时是否可以指定模式?

  •  121
  • marcosbeirigo  · 技术社区  · 14 年前

    有可能吗?我可以在连接URL上指定它吗?怎么做?

    8 回复  |  直到 5 年前
        1
  •  188
  •   rogerdpack    6 年前

    我知道已经有人回答了这个问题,但是我在尝试指定liquibase命令行使用的模式时遇到了同样的问题。

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

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

    基于早期修补程序显示:

    http://web.archive.org/web/20141025044151/http://postgresql.1045698.n5.nabble.com/Patch-to-allow-setting-schema-search-path-in-the-connectionURL-td2174512.html

    哪个建议的网址是这样的:

    jdbc:postgresql://localhost:5432/mydatabase?searchpath=myschema
    
        2
  •  60
  •   Steve    9 年前

    截至 version 9.4 ,您可以使用 currentSchema 连接字符串中的参数。

    例如:

    jdbc:postgresql://localhost:5432/mydatabase?currentSchema=myschema
    
        3
  •  47
  •   chzbrgla    14 年前

    如果在您的环境中可能,您还可以将用户的默认架构设置为所需架构:

    ALTER USER user_name SET search_path to 'schema'
    
        4
  •  43
  •   Herks    14 年前

    我不相信有办法在连接字符串中指定模式。看来你必须执行

    set search_path to 'schema'
    

    在建立连接以指定架构之后。

        5
  •  7
  •   Scott Langley    13 年前

    几年前,我向PostgreSQL JDBC驱动程序提交了一个补丁的更新版本来启用它。您必须从源代码构建PostreSQL JDBC驱动程序(在添加修补程序之后)才能使用它:

    http://archives.postgresql.org/pgsql-jdbc/2008-07/msg00012.php

    http://jdbc.postgresql.org/

        6
  •  6
  •   Basil Bourque    5 年前

    DataSource – setCurrentSchema

    当实例化 DataSource 实现中,查找设置当前/默认架构的方法。

    例如,在 PGSimpleDataSource 班级电话 setCurrentSchema .

    org.postgresql.ds.PGSimpleDataSource dataSource = new org.postgresql.ds.PGSimpleDataSource ( );
    dataSource.setServerName ( "localhost" );
    dataSource.setDatabaseName ( "your_db_here_" );
    dataSource.setPortNumber ( 5432 );
    dataSource.setUser ( "postgres" );
    dataSource.setPassword ( "your_password_here" );
    dataSource.setCurrentSchema ( "your_schema_name_here_" );  // <----------
    

    如果未指定,Postgres将尝试连接到名为 public .

        7
  •  3
  •   beldaz Nicolas W.    9 年前

    别忘了 SET SCHEMA 'myschema' 你可以在另一份声明中使用

    SET SCHEMA'value'是将搜索路径设置为值的别名。只有一个 可以使用此语法指定架构。

    而且,由于JDBC驱动程序上有9.4和可能更早的版本,因此支持 setSchema(String schemaName) 方法。

        8
  •  1
  •   a_horse_with_no_name    5 年前

    使用“sql.DB”(注意 search_path 带下划线):

    postgres://user:password@host/dbname?sslmode=disable&search_path=schema
    
        9
  •  0
  •   AlexSandu75    4 年前

    已经回答了:

    jdbc:postgresql://localhost:5432/mydatabase?当前模式=myschema

    与前面的答案一样,上面的连接字符串只起作用。

    我查过了,没关系: https://youtu.be/m0lBUHSLkNM?t=79

    (虽然公认的答案是8年前给出的, 这是一年前编辑的。. . )