尝试使用 JDBC 连接到 IBM 的 Informix docker 版本
Posted
技术标签:
【中文标题】尝试使用 JDBC 连接到 IBM 的 Informix docker 版本【英文标题】:Trying to connect to IBM's Informix docker edition with JDBC 【发布时间】:2021-05-15 20:33:50 【问题描述】:我正在尝试为 Informix 编写一些 Java 测试。我让 docker 从这里运行:
https://hub.docker.com/r/ibmcom/informix-developer-database/
我找不到任何用于连接它的 JDBC 连接字符串示例。
我用它来运行它: docker run -it --name ifx -h ifx --privileged -p 9089088 -p 9089:9089 -p 27017:27017 -p 27018:27018 -p 27883:27883 -e LICENSE =接受 ibmcom/informix-developer-database:最新
我正在使用默认用户名和密码尝试这个 jdbc:informix-sqli://localhost:9088/sysmaster:INFORMIXSERVER=ifx,但我得到“INFORMIXSERVER 与 DBSERVERNAME 或 DBSERVERALIASES 都不匹配。”
我也尝试过使用 INFORMIXSERVER=dev - 同样的错误。
有人知道这个 docker 镜像的 jdbc url 是什么吗?
【问题讨论】:
文档似乎是here。 当你启动它时,你从你的 docker 容器中暴露了什么端口?另外,你在什么操作系统上运行它? 我使用这个命令来启动它 docker run -it --name ifx -h ifx --privileged -p 9089088 -p 9089:9089 -p 27017:27017 -p 27018:27018 -p 27883 :27883 -e LICENSE=accept ibmcom/informix-developer-database:latest 在 Mac OS 上运行 docker @ElliottFrisch 是的,但他们不提供任何 JDBC url。 【参考方案1】:INFORMIXSERVER=informix
不是必需的,除非您尝试使用 JDBC 从 SQLHOST 文件中查找内容。只要您有 host:post,您就可以完全省略 INFORMIXSERVER 并使用 4.10.JC6 或更高版本的 JDBC 驱动程序。
这样就省去了知道每个 Informix 服务器名称的麻烦
【讨论】:
【参考方案2】:您可以使用以下 JDBC URL 字符串:
jdbc:informix-sqli://localhost:9088/sysmaster:INFORMIXSERVER=informix
您可以检查用于INFORMIXSERVER
参数的正确值,如下所示:
-
按如下方式连接到您的 Docker 实例:
docker exec -it ifx bash
-
在命令行查看
sqlhosts
文件的内容:
cat $INFORMIXDIR/etc/sqlhosts
您将看到与此类似的内容(假设安装了 vanilla Docker):
############################################################
### DO NOT MODIFY THIS COMMENT SECTION
### HOST NAME = 6b4943a932ab
############################################################
informix onsoctcp *6b4943a932ab 9088
informix_dr drsoctcp *6b4943a932ab 9089
端口 9088 的条目名称为 informix
。
【讨论】:
还要注意INFORMIXSERVER=informix
不是必需的,除非您尝试使用 JDBC 从 SQLHOST 文件中查找内容。只要您有 host:post,您就可以完全省略 INFORMIXSERVER 并使用 4.10.JC6 或更高版本的 JDBC 驱动程序以上是关于尝试使用 JDBC 连接到 IBM 的 Informix docker 版本的主要内容,如果未能解决你的问题,请参考以下文章
使用Python 3.6.2连接到IBM Bluemix上的MongoDB