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里的指定不生效。暫時還沒找到好的解決方法。后續哪位有好方法,麻煩分享下。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM