如何在 Spring Boot 中为 DB2 连接在数据源中设置模式

Posted

技术标签:

【中文标题】如何在 Spring Boot 中为 DB2 连接在数据源中设置模式【英文标题】:How to set schema in datasource for DB2 connection in Spring boot 【发布时间】:2020-03-18 05:28:53 【问题描述】:

我有不同的数据库连接,但其中的表相同。因此,为了重用这些实体类,我必须动态获取模式名称。试图在属性文件和数据源中设置架构但不工作。

application.properties 文件:

spring.datasource1.url=jdbc:db2://localhost:5054/AB01
spring.datasource1.username=abc
spring.datasource1.password=abc
spring.datasource1.driver-class-name=com.ibm.db2.jcc.DB2Driver
spring.datasource1.testWhileIdle=true
spring.datasource1.validationQuery=SELECT 1

尝试如下在属性文件中设置架构并得到错误“不支持 DDM 参数值。DDM 参数代码点的值不受支持:0x2110。”错误。

spring.datasource.url=jdbc:db2://localhost:5054/AB01?currentSchema=schema
spring.datasource.url=jdbc:db2://localhost:5054/AB01?search_path=schema
spring.datasource.url=jdbc:db2://localhost:5054/AB01?searchpath=schema

在配置类中也尝试过类似下面的方法,但不起作用。

public DataSource dataSource() 
    DriverManagerDataSource ds = new DriverManagerDataSource(databaseURL, username, pwd);
    ds.setDriverClassName(driverClassName);
    Properties connectionProperties = new Properties();
    connectionProperties.setProperty("spring.datasource.schema", "schema");
    ds.setConnectionProperties(connectionProperties);
    return ds;

【问题讨论】:

你看到这个答案了吗:***.com/questions/24278659/… 如果你使用 jdbc,试试这个:spring.datasource.jdbc-url=jdbc:db2://localhost:5054/AB01:currentSchema=YOURSCHEMA; 这样尝试,得到 Invalid database URL syntax error 【参考方案1】:

架构可以在 application.properties 中引用,如下所示

spring.datasource1.serverName=160.60.660.6
spring.datasource1.database=ABC
spring.datasource1.port=5083
spring.datasource1.schema=fdsf
spring.datasource1.username=usr
spring.datasource1.password=pwd

使用 DB2SimpleDataSource 创建数据库

public DataSource dataSource() 
                    DB2SimpleDataSource  datasource = new DB2SimpleDataSource ();
                    datasource.setUser(username);
                    datasource.setPassword(password);
                    datasource.setServerName(server);
                    datasource.setDatabaseName(databse);
                    datasource.setPortNumber(port);
                    datasource.setDriverType(4);  
                    datasource.setCurrentSchema(schema);
                    return datasource;

【讨论】:

以上是关于如何在 Spring Boot 中为 DB2 连接在数据源中设置模式的主要内容,如果未能解决你的问题,请参考以下文章

Spring Boot连接DB2查询结果时报错“java.lang.AbstractMethodError: com.ibm.db2.jcc.t4.b.isValid(I)Z”的解决办法

如何在 Spring Boot / Spring Data 中为 Amazon RDS Mysql 启用 SSL?

在邮递员中为与 SQL Server 连接的 Spring Boot API 获取 404 状态码

如何在 Spring Boot 中为 Spring LDAP 身份验证设置覆盖 BindAuthenticator handleBindException

无法在 Spring Boot 中为 Hikari 设置 keepAlive Time 配置

如何在 Spring Boot 中为 prometheus 制作自己的指标