达梦数据库-报错-05-Server Mode invalid(服务器模式不匹配)

目录

一、环境信息

二、介绍

三、排查过程

1、检查/etc/dm_svc.conf

(1)自验证

(2)LOGIN_MODE参数介绍

(3)客户反馈

2、编写JDBC连接DEMO

(1)源码

(2)编译

(3)运行

(4)生产模拟验证

3、用户侧验证


一、环境信息

|------|--------------------------|
| 名称 | 值 |
| CPU | x86 |
| 操作系统 | KylinV10 |
| DM版本 | DM Database Server 64 V8 |

二、介绍

客户新上线了一套一主多备,应用验证发现报错:Server Mode invalid。我们来记录一下这个文档的解决方法。

三、排查过程

1、检查/etc/dm_svc.conf

(1)自验证

我第一反应就是/etc/dm_svc.conf文件中的LOGIN_MODE参数配置不正确。下面是一个正确的例子我们看一下,DW_P只连接主机,DW_P只连接备机,客户有相关的需求,所以我们这么测试验证。

(2)LOGIN_MODE参数介绍

|------------|-----|-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
| 参数名 | 默认值 | 描述 |
| LOGIN_MODE | 4 | 指定优先登录的服务器模式。 0:优先连接 Primary 模式的库,Normal 模式次之,最后选择 Stantby 模式; 1:只连接主库; 2:只连接备库; 3:优先连接 Standby 模式的库,Primary 模式次之,最后选择 Normal 模式; 4:优先连接 Normal 模式的库,Primary模式次之,最后选择 Standby 模式; |

(3)客户反馈

客户表示没有用/etc/dm_svc.conf文件,是JDBC连接串中配置的,那我们需要转换思路。

2、编写JDBC连接DEMO

(1)源码

java 复制代码
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
public class jdbc_conn {
    static Connection con = null;
    static String cname = "dm.jdbc.driver.DmDriver";
    static String url = "jdbc:dm://writemaster?writemaster=(XX.XX.XX.XX0:5236,XX.XX.XX.XX1:5236,XX.XX.XX.XX2:5236,XX.XX.XX.XX3:5236,XX.XX.XX.XX4:5236)&schema=CRMCLOUD&zeroDateTimeBehavior=convertToNull&useUnicode=true&characterEncoding=utf-8&loginMode=1&rwSeparate=0";
    static String userid = "SYSDBA";
    static String pwd = "XXXXX";
    public static void main(String[] args) {
        try {
            Class.forName(cname);
            con = DriverManager.getConnection(url, userid, pwd);
            con.setAutoCommit(true);
            System.out.println("[SUCCESS]conn database");
        } catch (Exception e) {
            System.out.println("[FAIL]conn database:" + e.getMessage());
        }
    }
    public void disConn(Connection con) throws SQLException {
        if (con != null) {
            con.close();
        }
    }
}

(2)编译

java 复制代码
javac -cp ".:/dm/dmdbms/drivers/jdbc/DmJdbcDriver8.jar" jdbc_conn.java

(3)运行

bash 复制代码
java -cp ".:/dm/dmdbms/drivers/jdbc/DmJdbcDriver8.jar" jdbc_conn

(4)生产模拟验证

连接正常。

3、用户侧验证

业务老师将应用部署在docker中,docker与准生产环境主机连通,备机均不通,导致接口找不到符合的模式出现报错。

相关推荐
jamon_tan4 分钟前
Linux下cmake构建方法
linux
小菜同学爱学习6 分钟前
第一章 初识达梦数据库:基础认知与环境准备
数据库·达梦
JiaWen技术圈9 分钟前
内核子系统 nf_tables 深度解析
linux·服务器·安全·运维开发
zhoutongsheng9 分钟前
如何解决ORA-01078参数文件错误_pfile与spfile互相创建恢复
jvm·数据库·python
信徒_11 分钟前
负载均衡技术选型
运维·负载均衡
m0_7162550011 分钟前
批处理一道例题+答案解析+批处理知识点总结 | 批处理高频易错场景 + 正确写法对照表
数据库·oracle
计算机安禾13 分钟前
【Linux从入门到精通】第32篇:Nginx入门——高性能Web服务器搭建
linux·服务器·nginx
2401_8242226913 分钟前
HTML怎么标注字数限制提示_HTML实时字数统计占位【详解】
jvm·数据库·python
动恰客流管家17 分钟前
动恰3DV3丨客流统计系统:旺季人手不够淡季闲人太多?客流统计帮你科学优化人力成本
大数据·运维·人工智能·3d
d111111111d17 分钟前
了解Modbus
网络·笔记·stm32·单片机·嵌入式硬件·学习