跳到主要内容

切换其他数据库

提供Oracle、SqlServer、Postgresql 切换具体配置文档

重要前提

一、注释flyway配置

3.6.2+版本增加flyway自动升级数据库机制,默认只支持mysql5.7、mysql8,所以切换其他数据库必须把flyway的配置关闭掉。

application-dev.yml为例,将属性spring.flyway.enabled=false

如果不改,会报错

二、其他数据库脚本

官方默认不再提供oracle和SqlServer的脚本,大家参考文档自己转(注意:定时任务的表qrtz_*,需要删掉用原始的脚本重新执行一下) quartz-2.2.3-distribution.tar.gz

1. Oracle数据库

1.1 添加oracle驱动,修改pom.xml

<!-- oracle驱动 -->
<dependency>
<groupId>com.oracle</groupId>
<artifactId>ojdbc6</artifactId>
<version>11.2.0.3</version>
</dependency>

1.2 修改数据库连接

修改druid配置
validationQuery: SELECT 1 FROM DUAL

driver-class-name: oracle.jdbc.OracleDriver
url: jdbc:oracle:thin:@192.168.1.200:1521:ORCL
username: jeecgboot
password: jeecgboot

2. SQL server数据

2.1 添加SQL server驱动,修改pom.xml

<!--  sqlserver-->
<dependency>
<groupId>com.microsoft.sqlserver</groupId>
<artifactId>sqljdbc4</artifactId>
<version>4.0</version>
<scope>runtime</scope>
</dependency>

2.2 修改数据库连接

修改druid配置
validationQuery: SELECT 1
filters: stat,slf4j


driver-class-name: com.microsoft.sqlserver.jdbc.SQLServerDriver
url: jdbc:sqlserver://192.168.1.200:1433;SelectMethod=cursor;DatabaseName=jeecg-boot
username: sa
password: SA

修改JPA加上database-platform参数
jpa:
open-in-view: false
database-platform: org.hibernate.dialect.SQLServerDialect

2.3 sqlserver下定时任务报错处理

报错信息org.quartz.impl.jdbcjobstore.LockException: Failure obtaining db row lock: sql injection violation, syntax error: syntax error, not support option : UPDATE, pos 86, line 1, column 80, token UPDATE

修改配置如下:将selectWithLockSQL: SELECT* FROM 0LOCKS UPDLOCK WHERE LOCK_NAME = ?配置在jobStore下

quartz:  
  .....省略其他配置.....
  properties:
     org:
       quartz:
          jobStore:
            selectWithLockSQL: SELECT* FROM {0}LOCKS UPDLOCK WHERE LOCK_NAME = ?

2.4 sqlserver下启动后,如果控制台一直滚动如下图信息

可修改配置文件

web-stat-filter:
enabled:false

2.5 sqlserver启动失败,报错--- 不支持“variant”数据类型

修改sqlserver版本即可解决,将sqljdbc4替换为mssql-jdbc

<dependency>
<groupId>com.microsoft.sqlserver</groupId>
<artifactId>mssql-jdbc</artifactId>
<version>8.2.2.jre8</version>
</dependency>

报错信息:

修改依赖jar包:

3. postgresql数据库

3.1 添加postgresql驱动,修改pom.xml

(根据不同版本的数据库引入对应版本的驱动,下载地址:https://jdbc.postgresql.org/download)

<!--  postgresql-->
<dependency>
<groupId>org.postgresql</groupId>
<artifactId>postgresql</artifactId>
<version>42.2.6</version>
</dependency>

3.2 修改数据库连接

增加spring下的配置

spring:
#postgresql 报错问题
jpa:
database-platform: org.hibernate.dialect.PostgreSQLDialect
properties:
hibernate:
temp:
use_jdbc_metadata_defaults: false


修改druid配置
validationQuery: SELECT 1


url: jdbc:postgresql://localhost:5432/postgres?stringtype=unspecified
username: postgres
password: root
driver-class-name: org.postgresql.Driver

修改quartz配置

spring.quartz.properties.org.quartz.jobStore.driverDelegateClass=org.quartz.impl.jdbcjobstore.PostgreSQLDelegate

3.3 pgsql 自定义scheme

url加上scheme指定,例如:

jdbc:postgresql://localhost:5432/jeecgboot?currentSchema=demo&stringtype=unspecified

4. 达梦数据库

4.1 添加达梦数据库驱动,修改pom.xml

<!--达梦数据库 -->
<dependency>
<groupId>com.dameng</groupId>
<artifactId>Dm8JdbcDriver18</artifactId>
<version>8.1.1.49</version>
</dependency>
<dependency>
<groupId>com.dameng</groupId>
<artifactId>DmDialect-for-hibernate5.0</artifactId>
<version>8.1.1.49</version>
</dependency>

4.2 修改数据库连接

  • 修改jpa方言
jpa:
open-in-view: false
properties:
hibernate:
dialect: org.hibernate.dialect.DmDialect

  • 如果springboot升级到2.6+,还需要修改quartz 配置
spring.quartz.jdbc.initialize-schema=never
  • 添加达梦数据源
url: jdbc:dm://192.168.1.188:30236/?schema=SYSDBA&compatibleMode=oracle&zeroDateTimeBehavior=convertToNull&useUnicode=true&characterEncoding=utf-8
username: SYSDBA
password: SYSDBA001
driverClassName: dm.jdbc.driver.DmDriver

5. 人大金仓数据库

5.1 添加人大金仓数据库驱动,修改pom文件

<!--    人大金仓驱动    -->
<dependency>
<groupId>kingbase</groupId>
<artifactId>kingbase8</artifactId>
<version>8</version>
<scope>runtime</scope>
</dependency>

5.2 修改数据库连接

  • 修改jpa方言
jpa:
open-in-view: false
properties:
hibernate:
dialect: org.hibernate.dialect.PostgreSQLDialect

  • 如果springboot升级到2.6+,还需要修改quartz 配置
spring.quartz.jdbc.initialize-schema=never
  • 将filters中的wall 防火墙去掉
dynamic:
druid:
filters: stat,slf4j
  • 添加人大金仓数据源
url: jdbc:kingbase8://192.168.1.188:4321/test
username: system
password: system
driver-class-name: com.kingbase8.Driver

6. TIDB数据库

6.1 添加TIDB驱动,修改pom.xml

<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>8.0.27</version>
<scope>runtime</scope>
</dependency>

6.2 修改数据库连接

url: jdbc:mysql://127.0.0.1:3306/jeecgboot?characterEncoding=UTF-8&useUnicode=true&useSSL=false&tinyInt1isBit=false&allowPublicKeyRetrieval=true&serverTimezone=Asia/Shanghai
username: root
password: root
driver-class-name: com.mysql.cj.jdbc.Driver

更多操作请见 JeecgBoot集成TiDB

7. JeecgBoot支持哪些数据库

数据库支持
MySQL
Oracle11g
Sqlserver2017
PostgreSQL
DB2、Informix
MariaDB
SQLite、Hsqldb、Derby、H2
达梦、人大金仓、神通
华为高斯、虚谷、瀚高数据库
阿里云PolarDB、PPAS、HerdDB
Hive、HBase、CouchBase

Oracle和达梦数据库不支持Blob类型的查询