pgsql 外表的坑
2022/6/15 6:20:13
本文主要是介绍pgsql 外表的坑,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
项目中需要查询 SQL Server(老系统) 和 pgsql 中的数据,索性就将 SQL Server 的表作为外表在 pgsql 中创建:
-- 使用 tds_fdw 扩展插件创建一个外部数据库连接服务 CREATE SERVER mssql_svr FOREIGN DATA WRAPPER tds_fdw OPTIONS (servername '192.168.1.37', port '1433', character_set 'UTF-8', database 'sql_server'); -- 为本地数据库用户 postgres 在外部数据库连接服务 mssql_svr 上创建用户映射,对应了远程数据库的 sa 用户 CREATE USER MAPPING FOR postgres SERVER mssql_svr OPTIONS (username 'sa', password 'sql2008}); -- 创建外表 CREATE FOREIGN TABLE warranty_promotion."organization" ( id char(36) NOT NULL, org_name varchar(100) NOT NULL, org_code varchar(20) NOT NULL, manager_id char(36) NOT NULL, ) SERVER mssql_svr OPTIONS (table 'org'); CREATE FOREIGN TABLE pgsql.user ( id varchar(50) OPTIONS (column_name 'ID'), user_name varchar(50) OPTIONS (column_name 'Username'), email varchar(200) OPTIONS (column_name 'Email') ) SERVER mssql_svr OPTIONS (table 'user');
在进行外表的关联查询时,经常会报错:
### The error may exist in file [D:\Source\***-persistence\target\classes\mybatis\mapper\OrganizationDao.xml] ### The error may involve defaultParameterMap ### The error occurred while setting parameters ### SQL: SELECT t1.id, t1.org_name, t2.email as managerEmail FROM pgsql.organization t1 JOIN pgsql.user t2 ON t1.manager_id = t2.id WHERE t1.org_code IN ( ? ) ### Cause: org.postgresql.util.PSQLException: ERROR: DB-Library error: DB #: 20018, DB Msg: General SQL Server error: Check messages from the SQL Server, OS #: -1, OS Msg: , Level: 16 ; uncategorized SQLException; SQL state [HV00L]; error code [0]; ERROR: DB-Library error: DB #: 20018, DB Msg: General SQL Server error: Check messages from the SQL Server, OS #: -1, OS Msg: , Level: 16; nested exception is org.postgresql.util.PSQLException: ERROR: DB-Library error: DB #: 20018, DB Msg: General SQL Server error: Check messages from the SQL Server, OS #: -1, OS Msg: , Level: 16 at org.mybatis.spring.MyBatisExceptionTranslator.translateExceptionIfPossible(MyBatisExceptionTranslator.java:92)
一种解决方法是,如果查询到了结果,缓存到本地,可以尽量避免报错。
另一种解决方法是使用多数据源,不会出现这种奇怪的问题,推荐使用。
这篇关于pgsql 外表的坑的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-05-15鸿蒙生态设备数量超8亿台
- 2024-05-13TiDB + ES:转转业财系统亿级数据存储优化实践
- 2024-05-09“2024鸿蒙零基础快速实战-仿抖音App开发(ArkTS版)”实战课程已上线
- 2024-05-09聊聊如何通过arthas-tunnel-server来远程管理所有需要arthas监控的应用
- 2024-05-09log4j2这么配就对了
- 2024-05-09nginx修改Content-Type
- 2024-05-09Redis多数据源,看这篇就够了
- 2024-05-09Google Chrome驱动程序 124.0.6367.62(正式版本)去哪下载?
- 2024-05-09有没有大佬知道这种数据应该怎么抓取呀?
- 2024-05-09这种运行结果里的10.100000001,怎么能最快改成10.1?