首页 > 数据库 >【YashanDB知识库】如何配置jdbc驱动使getDatabaseProductName()返回Oracle

【YashanDB知识库】如何配置jdbc驱动使getDatabaseProductName()返回Oracle

时间:2024-09-25 10:51:11浏览次数:10  
标签:jdbc yashandb activiti productName getDatabaseProductName Oracle YashanDB

本文转自YashanDB官网,具体内容请见https://www.yashandb.com/newsinfo/7352676.html?templateId=1718516

问题现象

某些三方件,例如 工作流引擎activiti,暂未适配yashandb,使用中会出现如下异常:

【YashanDB知识库】如何配置jdbc驱动使getDatabaseProductName()返回Oracle_yashandb知识库

问题的风险及影响

影响客户业务无法进行。

问题影响的版本

所有的yashandb jdbc驱动版本。

问题发生原因

工作流引擎activiti在启动时,会检测数据库厂商。其目前并未适配yashandb,故不认识yashandb

conn.getMetaData().getDatabaseProductName()方法返回的YashanDB,进而抛出异常退出。

解决方法及规避方式

yashandb jdbc 1.7.1及以后版本在连接串中提供了productName选项,可以指定为Oracle(activiti是支持oracle的)。

【YashanDB知识库】如何配置jdbc驱动使getDatabaseProductName()返回Oracle_yashandb知识库_02

问题分析和处理过程

activiti在启动时会进行databaseProductName的判断,如果不匹配会异常退出:

【YashanDB知识库】如何配置jdbc驱动使getDatabaseProductName()返回Oracle_崖山数据库_03

上面截图中的databaseTypeMappings初始化如下:

【YashanDB知识库】如何配置jdbc驱动使getDatabaseProductName()返回Oracle_yashandb知识库_04

可以看到,并不支持yashandb。所以yashandb的jdbc驱动要加一个配置参数productName,可以在这种情况下返回Oracle。

经验总结

如下java代码可以检测当前jdbc驱动是否支持productName参数:

【YashanDB知识库】如何配置jdbc驱动使getDatabaseProductName()返回Oracle_yashandb知识库_05

如果输出为Oracle,那么支持;如果输出为YashanDB,那么不支持。

标签:jdbc,yashandb,activiti,productName,getDatabaseProductName,Oracle,YashanDB
From: https://blog.51cto.com/u_16065869/12107809

相关文章

  • 【YashanDB知识库】YAS-04110 invalid variant name
    本文转自YashanDB官网,具体内容请见https://www.yashandb.com/newsinfo/7369202.html?templateId=1718516【标题】错误码处理【问题分类】查询语句报错【关键字】YAS-04110【问题描述】执行特定sql时,遇到相应报错【问题原因分析】字段中含有保留字,应使用双引号包裹字段名称【......
  • 【YashanDB知识库】客户端字符集与数据库字符集兼容问题
    本文转自YashanDB官网,具体内容请见https://www.yashandb.com/newsinfo/7352675.html?templateId=1718516问题现象客户端yasql配置字符集为GBK,服务端yasdb配置字符集为UTF8,之后执行语句:会发现:期望是两个都失败(强检测字符集),或者两个都成功(弱检测字符集,直接将字符当做数据存储,不关心数......
  • Java反序列化利用链篇 | JdbcRowSetImpl利用链分析
    JdbcRowSetImpl利用链前言首先说明一下:利用链都有自己的使用场景,要根据场景进行选择不同的利用链。JdbcRowSetImpl利用链用于fastjson反序列化漏洞中。为什么?因为fastjson会在反序列化类时自动调用set开头的方法(不一定是setter方法),而JdbcRowSetImpl中存在一个set开头的方法,即......
  • JDBC中Druid连接池的配置与使用
    Druid连接池:        支持所有JDBC兼容的数据库,包括Oracle、MySql、Derby、SQLServer等。        简单SQL语句用时10微秒以内,复杂SQL用时30微秒。        网站:https://github.com/alibaba/druid/releases应用: 1.复制上面的链接下载druid.文件,......
  • SpringBoot整合ShardingJdbc分表
    项目中处理接收设备上报日志需求,上报数据量大,因此对数据进行按日期分表处理。使用技术:ShardingJdbc+rabbitMq+jpa+多线程处理引入所需jar:<dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-test</a......
  • 1. 如何在Java中连接MySQL数据库?请解释使用JDBC连接的步骤。
    要在Java中连接MySQL数据库,通常使用JDBC(JavaDatabaseConnectivity)API。这是一个用于执行SQL语句的JavaAPI,可以用来访问关系型数据库。下面是使用JDBC连接MySQL数据库的详细步骤:1.添加MySQLJDBC驱动首先,需要确保项目中包含MySQL的JDBC驱动程序。这个驱动程序通常是一个......
  • ‌‌JDBC和‌ODBC的区别
    JDBC和ODBC都是用于数据库连接的接口,但它们在技术背景、跨平台性、驱动程序来源、使用方式和配置、性能和安全性以及应用场景等方面存在显著差异。‌技术背景和语言支持‌JDBC是‌Java数据库连接技术,完全基于Java语言,因此与Java程序无缝集成。ODBC是一种开放、标准化的数据库连......
  • JDBC简介与应用:Java数据库连接的核心概念和技术
    简短介绍JDBC及其重要性。简短介绍JDBCJDBC(JavaDatabaseConnectivity)是一种用于执行SQL语句的JavaAPI并且独立于特定的数据库厂商。它允许开发者以一种标准的方式从Java应用程序中访问关系型数据库,这意味着一旦你掌握了JDBC的基本操作,你可以轻松地将你的应用程......
  • 【MySQL】MySQL中JDBC编程——MySQL驱动包安装——(超详解)
    前言:......
  • JDBC的介绍和连接MySQL数据库
    目录1.为什么学习JDBC1.1数据存储​编辑​编辑1.2 数据操作​编辑2.JDBC概述2.1JDBC概念2.2JDBC核心组成3.实现JDBC3.1JDBC搭建步骤3.2详细演示 3.3核心API3.3.1Driver​3.3.2 Connection​3.3.3Statament​3.3.4PreparedStatement3.3.5Res......