zoukankan      html  css  js  c++  java
  • springboot连接postgresql的指定schema的问题

    首先明确用的postgresql版本是

    PostgreSQL 9.5.25, compiled by Visual C++ build 1800, 64-bit

    springboot是

    2.3.5.RELEASE。
    现有的文档提供的连接数据库配置方式是
    url: jdbc:postgresql://IP:端口/数据库名?currentSchema=模式名&stringtype=unspecified

    通常postgresql默认指向的Schema是 public。

    这次因为用到ArcGis,其默认要读取的Schema是postgres,所以就创建了一个Schema叫postgres的。

    项目连接还是指定的public的Schema,后来发现项目读取的表会读到postgres的Schema里,查询配置指定读取Schema,很多文章都是说用的url里的

    currentSchema=模式名方式配置,可是不生效。
    后来看文章说是读取数据库有个Schema的读取顺序。 查询语句为:
    SHOW search_path;

    查询结果为:

    postgres, "$user", public, topology, sde

    第一位成了postgres,以前没有这个Schema,会去读取 $user 的Schema,这个指的是与当前连接数据库的用户名一致的Schema。因为不存在,则读取到了public。

    只是比较奇怪的是明明springboot的配置中指定了Schema,但是不生效。

    这个问题同样出在mybatis-plus根据数据库表结构生成对应文件的项目中,在这个项目中也需要连接数据库,经测试,同样的url配置Schema不生效,需要额外的指定Schema,才会去读取这个指定的Schema。

     // 数据源配置
            DataSourceConfig dsc = new DataSourceConfig();
            dsc.setDbType(DbType.POSTGRE_SQL);
            dsc.setTypeConvert(new PostgreSqlTypeConvert());
            dsc.setDriverName("org.postgresql.Driver");
            dsc.setUsername("postgres");
            dsc.setPassword("postgres");
            dsc.setUrl("jdbc:postgresql://IP:端口/test1?currentSchema=postgres&stringtype=unspecified");//这里指定的sehema没有作用,需要单独指定
            dsc.setSchemaName("public");
            mpg.setDataSource(dsc);

    现在Springboot集成postgresql的yml文件没有对应的,url里的指定不生效。暂时还没找到好的解决方法。后续哪位有好方法,麻烦分享下。

  • 相关阅读:
    杭电dp题集,附链接还有解题报告!!!!!
    js正則表達式语法
    java界面编程(8) ------ 组合框(下拉列表)
    四个好看的CSS样式表格
    搜集朋友写的几篇Android Elf相关的文档
    hadoop编程小技巧(5)---自己定义输入文件格式类InputFormat
    递归算法
    ua识别(浏览器标识识别)
    amazeui学习笔记一(开始使用5)--藏品collections
    amazeui学习笔记一(开始使用4)--Web App 相关
  • 原文地址:https://www.cnblogs.com/fuguang/p/15443053.html
Copyright © 2011-2022 走看看