ICode9

精准搜索请尝试: 精确搜索
首页 > 数据库> 文章详细

springboot连接postgresql的指定schema的问题

2021-10-23 14:00:50  阅读:373  来源: 互联网

标签:读取 postgresql springboot 指定 postgres schema dsc 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里的指定不生效。暂时还没找到好的解决方法。后续哪位有好方法,麻烦分享下。

标签:读取,postgresql,springboot,指定,postgres,schema,dsc,Schema
来源: https://www.cnblogs.com/fuguang/p/15443053.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有