达梦数据库-报错-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与准生产环境主机连通,备机均不通,导致接口找不到符合的模式出现报错。

相关推荐
鲸采云SRM采购管理系统2 小时前
采购管理系统哪家好?2026最新测评对比
java·服务器·数据库
cfm_29142 小时前
基于Binlog实现不停机数据库平滑迁移技术
运维·数据库·架构
Full Stack Developme2 小时前
SQL 注入 的历史及设计工作原理
数据库·sql
Tisfy2 小时前
Codex:通过编辑配置文件添加带Bearer的自定义MCP
数据库·大模型·agent·codex·mcp
迪康Defender2 小时前
AI 重构终端安全运营:智能分析中枢 AI Insight 模块架构与落地场景深度解析
运维·网络·人工智能·其他·安全·重构·架构
那年窗外下的雪.2 小时前
AIDC 学习日志 第 04 天 BGP Underlay 基础与路由选择
服务器·学习·php
哈__2 小时前
面向AI智能体的数据库专业技能包:将DBA工程经验封装为可调用能力
数据库·人工智能·dba
阿坤带你走近大数据2 小时前
SQL里where后面的1=1是干嘛的,走的是什么索引
数据库·sql
阿坤带你走近大数据2 小时前
SQL的执行顺序和书写顺序的介绍
数据库·sql·oracle
蒸蒸yyyyzwd3 小时前
cpp选手备战后端学习笔记day6 秋招笔试题
笔记·学习