达梦的后续调试


回顾

上次笔记总结和完成了dm的基本操作、概念理解和“本地工程与本地达梦”情况下、结合实例的数据迁移、写入操作

关于一个django工程如何与达梦数据库连接的全程总结 - 言行一 - 博客园 (cnblogs.com)

接下来针对“本地工程与远程达梦”情况进行 问题描述和逐步解决 的相关经验分享

目前情况

项目:

django框架下的前后端分离项目,后端采用python,前端vuE

问题:

本地负责使用pycharm和webstorm分别运行前后端,在此本地机上,使用“远程桌面连接”输入指定ip以操控远端服务器。远端只扮演数据库角色,本地的后端项目settings中,在DATABASE部分写入数据库的具体信息,运行migrate迁移命令时报错如下:

Traceback (most recent call last):

...略

SystemError: <class 'dmPython.Connection'> returned a result with an exception set

向chatgpt反映后认为“问题出现在本地的项目和具体代码上”,

但无法解释我在本地仅改动数据库指向的引擎和IP,就可以成功执行迁移命令且成功写入新数据

具体行为:
  • 本地MySQL和达梦数据库(数据库和项目在同一电脑,即127.0.0.1)可以成功连接 √

  • 远端的MySQL数据库可以成功连接 √

  • 唯独远端的达梦数据库报错如上述 √

我认为工程文件是无误的,如果代码和环境有问题那么无法和本地的达梦数据库成功连接,而这与事实相悖


与供应商客服沟通得出以下部分检查步骤

可排除的要素


确定参数
name

在远程的服务器上的DM管理工具中新建查询,运行

select name from v$database

查看结果以确认应该往name后写什么

image-20231007150250431
host

远端终端内使用ipconfig命令查看ip应该写什么(下图的ping命令在后文)

image-20231007120322791
关于 6001 网络通讯异常

确认数据库是否真的正常启动了,如果未正常启动,登录时报错误号:6001,错误消息:网络通信异常

Windows 通过 资源管理器看 后台 是否有 dmsvc.exe 进程

在达梦自带的“服务查看器”应用 检查DmAPService、DmServiceDMSERV是在运行的;

image-20231007150533297
关于Datagrip

DataGrip (DG) 出自JetBrains公司,是一款跨平台可视化数据库管理工具,可在Windows,OS X 和 Linux上使用;同时支持多种数据库Oracle,PostgreSQL,MySQL等等;使用其连接到数据库服务器,执行sql、创建表、创建索引以及导出数据等。在此插入DG是因为笔者使用该工具来测试连接(dm官方的“管理工具”亦可)

具体操作由菜单栏常规创建,只需注意填写好DriversName,在General中Driver files添加并选择 DmJdbcDriver18.jar。Class选择dm.jdbc.driver.DmDriver,如下图

image-20231007210159733
默认端口参数

端口号可以在数据库安装目录下的 dm.ini 文件中找到 PORT_NUM 确认

ping和telnet

通过 ping 命令(例如在命令提示符内ping www.baidu.com 看是否有回执)检查网络是否通畅

通过 telnet 命令检查端口是否通畅,具体的使用方法请自行通过网络搜索

最大会话数限制

确定是否达到最大会话数限制(无法建立新的连接),在 dmdbms/log 目录下,查看当月日志。例如本月(10 月)的日志名为:dm_DMSERVER_202310.log 若日志中有 reach the maxsession limit 的提示,则说明达到最大会话数限制

防火墙

本地机和远端的阿里服务器均已从注册表强制关停了防火墙(风险较大,属于最后手段,个人按需);

最终解决措施

通过由本地ping到远端以此方式检查问题,即本机发起

ping 47.92.208.149

与 由本地ping到另一服务器(ping 39.105.190.141)发现差异:

image-20231007210743953

由此暂定解决方式为重新在141服务器内从头开始配置达梦与dmPython环境和资源编译。

posted on 2023-10-07 21:12  言行一  阅读(152)  评论(0编辑  收藏  举报