最近有个项目,需要接入第三方系统的数据,第三方系统使用是达梦6,这个比较老了,在网上没有找到安装包,只找到一个镜像,但是安装运行启动报错,不过最终解决了,记录一下解决过程。
一开始使用的命令如下:
docker run -d -p 30236:5236 --restart=always --name=dm6_test --privileged=true -e LD_LIBRARY_PATH=/opt/dmdbms/bin -e PAGE_SIZE=16 -e EXTENT_SIZE=32 -e LOG_SIZE=1024 -e UNICODE_FLAG=1 -e INSTANCE_NAME=dm6_test -v /opt/data:/opt/dmdbms/data 95xdocker/dm6-centos7:1.0
启动后很快重启,查看日志发现没有任何日志输出,修改了一下命令,不使用挂载卷,docker run -d -p 15236:5236 --name=dm6_test 95xdocker/dm6-centos7:1.0
仍然一样,启动后不停重启,也没有任何日志。
去dockerhub网上看了一下这个镜像,看能不能找到一些有用消息,可惜什么都没有,制作镜像过程也很简单
无奈之下docker inspect看一下容器信息,看能不能找到什么有用信息,还真发现一个,
发现exited 0 ,然后根据这个去搜索一下资料,启动参数加了一个-t ,docker run -t -d -p 15236:5236 --name=dm6_test2 95xdocker/dm6-centos7:1.0
,终于启动成功了,不再反复重启了,不过我高兴的比较早,虽然启动成功,但是连接不上,开始以为是防火墙原因,检查后发现防火墙关闭,此时只能怀疑是数据库没有启动或者端口不是默认的5236。
进入容器后,使用ps命令一查,没有数据库进程,
这样一看是数据库没有启动,也不知道安装在哪个目录,不过一般也就是在home、usr、opt等几个目录,最终发现是在/opt目录下,
cd /opt/dmdbms/bin
./dmserverd start
ps -ef | grep dm.ini
以为解决了,但还是连不上,在容器内部使用命令行连接数据库测试,连接成功,说明数据库启动成功,没有问题。
这么看来是数据库的端口应该有改动,检查了一下dm.ini文件,发现端口被设置成为12345
使用DataGrip进行连接测试,使用之前的DM7驱动板连接报错,
看来得找DM6的驱动包,谷歌了,从Github找到一个DM6驱动包,按照如下步骤配置驱动
进入Driver管理界面,输入驱动名称,然后添加驱动包
然后点击下方的Create DataSoure进入添加数据源页面
输入URL和密码即可,此处我这儿的URL是jdbc:dm6://192.168.31.126:12345,用户名和密码默认为SYSDBA/SYSDBA,然后Test Connection进行测试,如下图所示,完美解决。