首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >无法创建到DB2测试容器的JDBC连接

无法创建到DB2测试容器的JDBC连接
EN

Stack Overflow用户
提问于 2021-07-02 14:29:03
回答 1查看 264关注 0票数 0

我正在使用一个Test Container进行集成测试,它需要一个数据库。在此之前,我已经在MSSQL中这样做了,并且工作得很好,但这是我第一次尝试在DB2中使用它。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
    <dependency>
        <groupId>org.testcontainers</groupId>
        <artifactId>db2</artifactId>
        <version>1.15.0</version>
        <scope>test</scope>
    </dependency>

我的设置如下:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
@BeforeClass
public static void setUpClass() {
    db2Container = new Db2Container("ibmcom/db2")
            .acceptLicense()
            .withDatabaseName("testDb2")
            .withUsername("username")
            .withPassword("password")
            .withInitScript("initDB2.sql");
    db2Container.start();

    System.setProperty("general.datasource.jbhdb2p.jdbc-url", db2Container.getJdbcUrl());
    System.setProperty("general.datasource.jbhdb2p.username", db2Container.getUsername());
    System.setProperty("general.datasource.jbhdb2p.password", db2Container.getPassword());
}

我以前没有用DB2做过测试容器,所以我不确定想要的日志,但是它看起来很好,直到它开始永远循环这3行:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
10:10:18.569 [main] DEBUG org.testcontainers.shaded.com.github.dockerjava.core.command.AbstrDockerCmd - Cmd: 2331d2432c59900608324d8fe471d4e6fec3a6c337ebdf8bb0c532d361a07b66,false
10:10:18.570 [main] DEBUG org.testcontainers.shaded.com.github.dockerjava.core.exec.InspectContainerCmdExec - GET: DefaultWebTarget{path=[/containers/2331d2432c59900608324d8fe471d4e6fec3a6c337ebdf8bb0c532d361a07b66/json], queryParams={}}
10:10:18.578 [main] DEBUG  [ibmcom/db2:latest] - Trying to create JDBC connection using com.ibm.db2.jcc.DB2Driver to jdbc:db2://localhost:49193/testDb2 with properties: {password=password, user=username}

以下是循环开始前的日志:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
10:08:19.692 [main] DEBUG org.testcontainers.containers.output.WaitingConsumer - STDOUT: (*) Previous setup has not been detected. Creating the users... 
10:08:19.692 [main] DEBUG org.testcontainers.containers.output.WaitingConsumer - STDOUT: (*) Creating users ...
10:08:19.837 [main] DEBUG org.testcontainers.containers.output.WaitingConsumer - STDOUT: (*) Creating instance ... 
10:08:20.906 [main] DEBUG org.testcontainers.containers.output.WaitingConsumer - STDOUT: 
10:08:20.907 [main] DEBUG org.testcontainers.containers.output.WaitingConsumer - STDOUT: DB2 installation is being initialized.
10:08:23.322 [main] DEBUG org.testcontainers.containers.output.WaitingConsumer - STDOUT: 
10:08:23.322 [main] DEBUG org.testcontainers.containers.output.WaitingConsumer - STDOUT: Total estimated time for all tasks to be performed: 309 second(s) 
10:08:23.322 [main] DEBUG org.testcontainers.containers.output.WaitingConsumer - STDOUT:  Total number of tasks to be performed: 4 
10:08:23.337 [main] DEBUG org.testcontainers.containers.output.WaitingConsumer - STDOUT: Estimated time 1 second(s) 
10:08:23.337 [main] DEBUG org.testcontainers.containers.output.WaitingConsumer - STDOUT: Description: Setting default global profile registry variables 
10:08:23.337 [main] DEBUG org.testcontainers.containers.output.WaitingConsumer - STDOUT: Task #1 start
10:08:23.359 [main] DEBUG org.testcontainers.containers.output.WaitingConsumer - STDOUT: 
10:08:23.359 [main] DEBUG org.testcontainers.containers.output.WaitingConsumer - STDOUT: Task #1 end 
10:08:23.383 [main] DEBUG org.testcontainers.containers.output.WaitingConsumer - STDOUT: Estimated time 5 second(s) 
10:08:23.383 [main] DEBUG org.testcontainers.containers.output.WaitingConsumer - STDOUT: Description: Initializing instance list 
10:08:23.383 [main] DEBUG org.testcontainers.containers.output.WaitingConsumer - STDOUT: Task #2 start
10:08:23.965 [main] DEBUG org.testcontainers.containers.output.WaitingConsumer - STDOUT: 
10:08:23.965 [main] DEBUG org.testcontainers.containers.output.WaitingConsumer - STDOUT: Task #2 end 
10:08:23.979 [main] DEBUG org.testcontainers.containers.output.WaitingConsumer - STDOUT: Estimated time 300 second(s) 
10:08:23.979 [main] DEBUG org.testcontainers.containers.output.WaitingConsumer - STDOUT: Description: Configuring DB2 instances 
10:08:23.979 [main] DEBUG org.testcontainers.containers.output.WaitingConsumer - STDOUT: Task #3 start
10:08:39.070 [main] DEBUG org.testcontainers.containers.output.WaitingConsumer - STDOUT: Task #3 end 
10:08:39.070 [main] DEBUG org.testcontainers.containers.output.WaitingConsumer - STDOUT: 
10:08:39.091 [main] DEBUG org.testcontainers.containers.output.WaitingConsumer - STDOUT: 
10:08:39.091 [main] DEBUG org.testcontainers.containers.output.WaitingConsumer - STDOUT: The execution completed successfully.
10:08:39.091 [main] DEBUG org.testcontainers.containers.output.WaitingConsumer - STDOUT: 
10:08:39.091 [main] DEBUG org.testcontainers.containers.output.WaitingConsumer - STDOUT: Task #4 end 
10:08:39.091 [main] DEBUG org.testcontainers.containers.output.WaitingConsumer - STDOUT: Estimated time 3 second(s) 
10:08:39.091 [main] DEBUG org.testcontainers.containers.output.WaitingConsumer - STDOUT: Description: Updating global profile registry 
10:08:39.091 [main] DEBUG org.testcontainers.containers.output.WaitingConsumer - STDOUT: Task #4 start
10:08:40.739 [main] DEBUG org.testcontainers.containers.output.WaitingConsumer - STDOUT: 
10:08:40.739 [main] DEBUG org.testcontainers.containers.output.WaitingConsumer - STDOUT: 
10:08:40.739 [main] DEBUG org.testcontainers.containers.output.WaitingConsumer - STDOUT: DBI1070I  Program db2icrt completed successfully.
10:08:40.739 [main] DEBUG org.testcontainers.containers.output.WaitingConsumer - STDOUT: 
10:08:40.739 [main] DEBUG org.testcontainers.containers.output.WaitingConsumer - STDOUT: 
10:08:40.739 [main] DEBUG org.testcontainers.containers.output.WaitingConsumer - STDOUT: DBI1446I  The db2icrt command is running.
10:08:40.739 [main] DEBUG org.testcontainers.containers.output.WaitingConsumer - STDOUT: For more information see the DB2 installation log at "/tmp/db2icrt.log.71".
10:08:40.910 [main] DEBUG org.testcontainers.containers.output.WaitingConsumer - STDOUT: SQL1032N  No start database manager command was issued.  SQLSTATE=57019
10:08:40.910 [main] DEBUG org.testcontainers.containers.output.WaitingConsumer - STDOUT: 07/02/2021 14:08:41     0   0   SQL1032N  No start database manager command was issued.
10:08:43.018 [main] DEBUG org.testcontainers.containers.output.WaitingConsumer - STDOUT: (*) Cataloging existing databases
10:08:43.040 [main] DEBUG org.testcontainers.containers.output.WaitingConsumer - STDOUT: (*) Applying Db2 license ...
10:08:43.040 [main] DEBUG org.testcontainers.containers.output.WaitingConsumer - STDERR: ls: cannot access /database/data/sa/NODE0000: No such file or directory
10:08:43.113 [main] DEBUG org.testcontainers.containers.output.WaitingConsumer - STDOUT: 
10:08:43.113 [main] DEBUG org.testcontainers.containers.output.WaitingConsumer - STDOUT: LIC1402I  License added successfully.
10:08:43.113 [main] DEBUG org.testcontainers.containers.output.WaitingConsumer - STDOUT: LIC1426I  This product is now licensed for use as outlined in your License Agreement.  USE OF THE PRODUCT CONSTITUTES ACCEPTANCE OF THE TERMS OF THE IBM LICENSE AGREEMENT, LOCATED IN THE FOLLOWING DIRECTORY: "/opt/ibm/db2/V11.5/license/en_US.iso88591"
10:08:43.113 [main] DEBUG org.testcontainers.containers.output.WaitingConsumer - STDOUT: 
10:08:43.114 [main] DEBUG org.testcontainers.containers.output.WaitingConsumer - STDOUT: 
10:08:43.134 [main] DEBUG org.testcontainers.containers.output.WaitingConsumer - STDOUT: (*) Updating DBM CFG parameters ... 
10:08:43.134 [main] DEBUG org.testcontainers.containers.output.WaitingConsumer - STDOUT: (*) Saving the checksum of the current nodelock file ...
10:08:44.528 [main] DEBUG org.testcontainers.containers.output.WaitingConsumer - STDOUT: DB20000I  The UPDATE DATABASE MANAGER CONFIGURATION command completed 
10:08:44.530 [main] DEBUG org.testcontainers.containers.output.WaitingConsumer - STDOUT: successfully.
10:08:45.636 [main] DEBUG org.testcontainers.containers.output.WaitingConsumer - STDOUT: successfully.
10:08:45.636 [main] DEBUG org.testcontainers.containers.output.WaitingConsumer - STDOUT: DB20000I  The UPDATE DATABASE MANAGER CONFIGURATION command completed 
10:08:46.731 [main] DEBUG org.testcontainers.containers.output.WaitingConsumer - STDOUT: successfully.
10:08:46.732 [main] DEBUG org.testcontainers.containers.output.WaitingConsumer - STDOUT: DB20000I  The UPDATE DATABASE MANAGER CONFIGURATION command completed 
10:08:46.752 [main] DEBUG org.testcontainers.containers.output.WaitingConsumer - STDOUT: (*) Remounting /database with suid... 
10:08:46.752 [main] DEBUG org.testcontainers.containers.output.WaitingConsumer - STDOUT: No Cgroup memory limit detected, instance memory will follow automatic tuning
10:08:51.381 [main] DEBUG org.testcontainers.containers.output.WaitingConsumer - STDOUT: (*) Code level is the same. No update/upgrade needed.
10:08:51.381 [main] DEBUG org.testcontainers.containers.output.WaitingConsumer - STDOUT: (*) Nothing appears in the Db2 directory. will skip update/upgrade.
10:08:51.440 [main] DEBUG org.testcontainers.containers.output.WaitingConsumer - STDOUT: DB2 State : Operable
10:08:51.440 [main] DEBUG org.testcontainers.containers.output.WaitingConsumer - STDOUT: 
10:08:51.463 [main] DEBUG org.testcontainers.containers.output.WaitingConsumer - STDOUT: 
10:08:51.463 [main] DEBUG org.testcontainers.containers.output.WaitingConsumer - STDOUT: Starting DB2...
10:08:51.463 [main] DEBUG org.testcontainers.containers.output.WaitingConsumer - STDOUT: DB2 has not been started
10:08:53.379 [main] DEBUG org.testcontainers.containers.output.WaitingConsumer - STDOUT: SQL1063N  DB2START processing was successful.
10:08:53.379 [main] DEBUG org.testcontainers.containers.output.WaitingConsumer - STDOUT: 07/02/2021 14:08:53     0   0   SQL1063N  DB2START processing was successful.
10:08:53.394 [main] DEBUG org.testcontainers.containers.output.WaitingConsumer - STDOUT: (*) Creating database testDb2 ... 
10:08:53.394 [main] DEBUG org.testcontainers.containers.output.WaitingConsumer - STDOUT: (*) User chose to create testDb2 database
10:10:15.143 [main] DEBUG org.testcontainers.containers.output.WaitingConsumer - STDOUT: DB20000I  The CREATE DATABASE command completed successfully.
10:10:16.771 [main] DEBUG org.testcontainers.containers.output.WaitingConsumer - STDOUT: DB20000I  The ACTIVATE DATABASE command completed successfully.
10:10:16.782 [main] DEBUG org.testcontainers.containers.output.WaitingConsumer - STDOUT: (*) Instance and database will not be auto configured. AUTOCONFIG has been set to false. 
10:10:16.782 [main] DEBUG org.testcontainers.containers.output.WaitingConsumer - STDOUT: (*) Log archiving will not be configured as ARCHIVE_LOGS has been set to false. 
10:10:18.307 [main] DEBUG org.testcontainers.containers.output.WaitingConsumer - STDOUT: (*) Skipping TEXT_SEARCH setup for database testDb2 because TEXT_SEARCH is not configured for the instance ...
10:10:18.519 [main] DEBUG org.testcontainers.containers.output.WaitingConsumer - STDOUT: ssh-keygen: generating new host keys: RSA2 RSA DSA ECDSA ED96529 
10:10:18.534 [main] DEBUG org.testcontainers.containers.output.WaitingConsumer - STDOUT: 2
10:10:18.534 [main] DEBUG org.testcontainers.containers.output.WaitingConsumer - STDOUT: DATA #10: unsigned integer, 8 bytes
10:10:18.534 [main] DEBUG org.testcontainers.containers.output.WaitingConsumer - STDOUT: 2
10:10:18.534 [main] DEBUG org.testcontainers.containers.output.WaitingConsumer - STDOUT: DATA #9 : unsigned integer, 8 bytes
10:10:18.534 [main] DEBUG org.testcontainers.containers.output.WaitingConsumer - STDOUT: 4
10:10:18.534 [main] DEBUG org.testcontainers.containers.output.WaitingConsumer - STDOUT: DATA #8 : signed integer, 4 bytes
10:10:18.535 [main] DEBUG org.testcontainers.containers.output.WaitingConsumer - STDOUT: 4
10:10:18.535 [main] DEBUG org.testcontainers.containers.output.WaitingConsumer - STDOUT: DATA #7 : signed integer, 4 bytes
10:10:18.535 [main] DEBUG org.testcontainers.containers.output.WaitingConsumer - STDOUT: 8
10:10:18.535 [main] DEBUG org.testcontainers.containers.output.WaitingConsumer - STDOUT: DATA #6 : signed integer, 4 bytes
10:10:18.535 [main] DEBUG org.testcontainers.containers.output.WaitingConsumer - STDOUT: (*) Setup has completed.
10:10:18.537 [main] INFO  [ibmcom/db2:latest] - Container ibmcom/db2:latest started in PT2M2.3332179S
10:10:18.545 [main] INFO org.testcontainers.ext.ScriptUtils - Executing database script from initDB2.sql

我找到了一个已经在其中编写了DB2集成测试的存储库,并尝试在我的机器上克隆并运行它。它给出了与我试图创建的日志相同的日志。这使我认为我的问题可能是docker/IDE问题,而不是代码问题。

有人能从这些日志中收集足够的信息来指引我前进的方向吗?谢谢!

EN

回答 1

Stack Overflow用户

发布于 2021-07-17 17:26:44

您可以编写Datasource Bean类集成测试,并根据postgresqlContainer或DB2中的参数创建数据例程

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
 @Configuration
    @TestInstance(TestInstance.Lifecycle.PER_CLASS)
    @Testcontainers    
    public class TestConfiguration{

       PostgreSQLContainer<?> postgres = 
             new PostgreSQLContainer<>(POSTGRES_TEST_IMAGE)
             .withInitScript("somepath/init_postgresql.sql")


            @Primary     
            @Bean     
            public DataSource dataSource(){         
            HikariConfig hikariConfig=new HikariConfig();  
            hikariConfig.setJdbcUrl(postgres.getUrl());    
            hikariConfig.setUsername(postgres.getUsername());  
            hikariConfig.setPassword(postgres.getPassword());   
            hikariConfig.setDriverClassName(postgres.getDriverClassName());         
            HikariDataSource hikariDataSource=new HikariDataSource(hikariConfig);         
            return hikariDataSource;     
            }
    }  

并将上述配置类导入到您的springboot测试中,它将自动使用TestContainer的Postgres数据源覆盖数据源。

您的测试应该如下所示

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
@ExtendWith({SpringExtension.clas})
@SpringBootTest(classes = {DataSourceConfiguration.class, TestConfiguration.class})
@RequiredArgsConstructor(onConstructor = @__(@Autowired))
@TestInstance(TestInstance.Lifecycle.PER_CLASS)
@Testcontainers
public class RepoTest {

    @Autowired
    TestRepository testRepository;

    @Test
    public void testRepo() {
        System.out.println("*****************" + testRepository.existsById(1L));
    }

}

有关详情,请访问以下链接:https://medium.com/@arpitsharma14/testcontainer-springboot-tests-faa05b71a7dc

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/68226920

复制
相关文章
DB2的JDBC连接
 1:如果数据库为db2,则你所要查找的表前面要加上这个建表的用户名,       如,testTable这张表,我是通过系统登陆的帐号所建,为lixc.testTable;       我所使用查询的用户为admin,如果你只是写select * from testTable ,则       db2只是默认的查找admin.testTable,这张表不存在,所以应该写为:       select * from lixc.testTable    2: 如果你连接数据库的url和driverName都是通过设置文件*.properties来读取的       话,则要注意: 如driverManager:com.ibm.db2.jcc.DB2Driver,如果其后面更有       空格的话,可能在java运行的时候会出现,com/ibm/db2/jcc/DB2Driver这个class文件       未找到的错误。我原来遇见这个情况,如果直接在Class.forName(“driverName”).newInstance();       测试成功,可是读取设置文件Class.forName(driverStr).newInstance();则是报以上错误。       后来将设置文件中后面的空格去掉,程式运行成功。
全栈程序员站长
2021/05/19
1.7K0
python连接db2
2、安装setuptools,下载地址http://pypi.python.org/pypi/setuptools
py3study
2020/01/06
1.5K0
Docker创建MySQL容器并远程连接
先登录并做一些修改以便 navicat 连接,密码为 root 账号也是 root 以上已经介绍过了。
程序员 NEO
2023/09/30
7030
Docker创建MySQL容器并远程连接
运行容器的虚拟机SSH远程无法连接
最近碰到一个诡异的问题,ssh登陆的时候,显示无法Permission denied,是不是很熟悉。。。
SRE运维实践
2019/07/08
2.3K0
运行容器的虚拟机SSH远程无法连接
Java应用中常见的JDBC连接字符串(SQLite、MySQL、Oracle、Sybase、SQLServer、DB2)
本文介绍了Java应用中常见的JDBC连接字符串,包括连接Oracle、MySQL、PostgreSQL、SQLite、Sybase、SQL Server、DB2和Informix等数据库的常见方式。
YGingko
2017/12/28
3K0
MySQL的JDBC连接
JDBC 是 Java Database Connective的缩写,表示使用Java去连接数据库进行数据操作的过程
全栈程序员站长
2022/09/09
3.3K0
数据库连接(1)-从JDBC到MyBatis
因为有持久层框架,和Spring的存在,越来越多的人对数据库连接这块不甚了解,只知使用方便,不知其原理。所以写一个数据库连接的系列文章,总结下本人在数据库连接方面遇到的问题,和对数据库连接的理解。
方丈的寺院
2019/08/05
1.2K0
数据库连接(1)-从JDBC到MyBatis
jdbc连接mysql5.7_JDBC连接MySQL5.7的方法
1.首先准备mysql 和eclipse环境,在环境搭建好之后,从eclipse官网下载jdbc的驱动包,下载地址http://dev.mysql.com/downloads/connector/j/
全栈程序员站长
2022/10/01
4.2K0
JDBC连接Mysql数据(从简单到实用,超详细)
1.获取连接,使用Driver接口 2.将用户名与密码封装 3.调用connect方法来返回一个Connection对象,这是一个连接
小尘要自信
2023/10/10
2K0
JDBC连接Mysql数据(从简单到实用,超详细)
Docker 中创建 mysql 容器,并设置远程连接
-p 代表端口映射,格式为 宿主机映射端口:容器运行端口 -e 代表添加环境变量 MYSQL_ROOT_PASSWORD是root用户的登陆密码
张云飞Vir
2020/05/26
12.2K0
jdbc测试数据库连接_ping测试网络连通性
1、下载MySQL驱动jar文件:https://dev.mysql.com/downloads/connector/j/
全栈程序员站长
2022/10/05
1.2K0
JDBC连接池、JDBC Template使用
点击下载 链接:https://pan.baidu.com/s/1ooBjjuLDZytAHWyxkRXwOw 提取码:9bjo
不愿意做鱼的小鲸鱼
2022/09/24
7900
JDBC连接池、JDBC Template使用
JDBC连接大全哦
Class.forName(“oracle.jdbc.driver.OracleDriver”).newInstance(); String url=”jdbc:oracle:thin:@localhost:1521:orcl”; //orcl为数据库的SID String user=”test”; String password=”test”; Connection conn= DriverManager.getConnection(url,user,password); 
全栈程序员站长
2021/04/26
7750
JDBC 驱动升级到 Version 8.0.28 连接 MySQL 的踩坑记录
升级驱动到 mysql-connector-java 8.0.28 后,部署执行各种报错,但是把连接器切换到 mysql-connector-java-5.1.48 又没有问题,很是疑惑!
攻城狮杰森
2022/06/03
4.9K0
JDBC 驱动升级到 Version 8.0.28 连接 MySQL 的踩坑记录
jdbc连接oracle语法
jdbc也有事物:connection.setAutoCommit(false) 默认是true自动提交
HUC思梦
2020/09/03
9190
JDBC连接池
当系统初始化好后,容器被创建,容器中会申请一些连接对象,当用户来访问数据库时,从容器中获取连接对象,用户访问完之后,会将连接对象归还给容器。
羊羽shine
2019/05/29
1K0
使用jdbc连接mysql
image.png JDBC连接MYSQL数据库: package cn.outofmemory.test;import java.sql.Connection;import java.sql.DriverManager;public class Mysql { public static void main(String arg[]) { try { Connection con = null; //定义一个MYSQL链接对象
java达人
2018/01/31
3.1K0
使用jdbc连接mysql
JDBC SSL连接MySQL
SSL(Secure Socket Layer:安全套接字层),利用数据加密、身份验证和消息完整性验证机制,为基于TCP等可靠连接的应用层协议提供安全性保证。
bisal
2021/09/10
5.7K0
JDBC SSL连接MySQL
java学习:weblogic下JNDI及JDBC连接测试(weblogic环境)
JNDI的专业解释,大家自行去网络搜索吧,这里就不啰嗦了。 单纯从使用角度看,可以简称把它看成一个key-value的“哈希资源”容器。给定一个string类型的key,可以把任何类型的value,放入这个容器(通过bind/rebind方法);其它地方需要使用该资源时,根据key就能取出该资源(通过lookup方法) JNDI使用示例: package jmyang.weblogic; /** * <p>Title:JNDI示例(WebLogic环境) </p> * <p>Description:
菩提树下的杨过
2018/01/24
1.8K0
java学习:weblogic下JNDI及JDBC连接测试(weblogic环境)
spring(4) - spring创建Bean并注册到容器
先了解springboot启动过程,包括自动装配,初始化环境变量,springApplicationContext容器的初始化等,详情参读 spring(3) - springboot启动过程
惊羽-布壳儿
2022/06/15
3940

相似问题

无法在powerdesigner中为DB2创建JDBC连接。

13

DB2 JDBC连接

10

到DB2中架构的IASP JDBC连接

13

Apache无法创建到Apache演练的JDBC连接。

14

JDBC无法建立到jdbc的连接:mysql://

10
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文