切换其他数据库
提供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类型的查询