开发喵星球

若依切换数据源为 PostgreSQL 数据库(301)

若依管理系统默认使用 MySQL 作为数据库,这篇文章将介绍如何将数据源切换为 PostgreSQL

一、切换数据源

ruoyi-admin 项目中添加 PostgreSQL 驱动:

<dependency>
    <groupId>org.postgresql</groupId>
    <artifactId>postgresql</artifactId>
    <version>42.2.18</version>
</dependency>

接着,修改配置文件,将数据源设置为 PostgreSQL

spring:
    datasource:
        type: com.alibaba.druid.pool.DruidDataSource
        driverClassName: org.postgresql.Driver
        druid:
            # 主数据源配置为 PostgreSQL
            master:
                url: jdbc:postgresql://127.0.0.1:5432/FDS?stringtype=unspecified
                username: postgres
                password: ts123456

二、调整函数及语法

由于 PostgreSQL 没有 dual 表,配置文件中的 validationQuery 需要改为:select version() 以检测数据库连接是否正常。

validationQuery 配置

application.yml 中的 PageHelper 分页插件也需调整为支持 PostgreSQL

pagehelper:
  helperDialect: postgresql
  supportMethodsArguments: true
  params: count=countSql

以下是一些常见的 SQL 调整:

三、添加自增序列

对于有自增主键的表,必须配置自增序列:

CREATE SEQUENCE sys_user_id_seq
  START WITH 3
  INCREMENT BY 1
  NO MINVALUE
  NO MAXVALUE 
  CACHE 1;

-- 配置表字段自增
ALTER TABLE sys_user ALTER COLUMN user_id SET DEFAULT nextval('sys_user_id_seq');

例如:

CREATE SEQUENCE sys_oper_log_id_seq
  START WITH 3
  INCREMENT BY 1
  NO MINVALUE
  NO MAXVALUE 
  CACHE 1;

ALTER TABLE sys_oper_log ALTER COLUMN oper_id SET DEFAULT nextval('sys_oper_log_id_seq');

重复上述步骤,为需要自增的字段添加序列。

四、设置默认值与引号

对于有默认值的 char 类型字段,在 PostgreSQL 中需要手动添加默认值,同时要注意加引号。例如在 sys_usersys_rolesys_dept 表中的 del_flagstatus 字段,需设置默认值并加引号。其他表如 sys_menusys_postsys_notice 等也需要进行相同的设置。

设置默认值

五、代码修改

调整代码中的数据类型与值:

此外,注释掉 vue 文件中涉及“父子联动”的代码。

<select id="selectDbTableList" parameterType="GenTable" resultMap="GenTableResult">
  SELECT * FROM information_schema.tables
  WHERE table_schema = (SELECT CURRENT_SCHEMA())
  AND table_name NOT LIKE 'qrtz_%' AND table_name NOT LIKE 'gen_%'
  AND table_name NOT IN (SELECT table_name FROM gen_table)
  <if test="tableName != null and tableName != ''">
    AND LOWER(table_name) LIKE LOWER(CONCAT('%', #{tableName}, '%'))
  </if>
</select>

六、去除数据库校验

若不打算使用数据库,只需使用 RuoYi 提供的工具类,可以去掉以下类的 init 方法:

SysConfigServiceImpl

SysDictTypeServiceImpl

SysJobServiceImpl

这样即可完成 PostgreSQL 数据源的切换。

   
分类:Java/OOP 作者:无限繁荣, 吴蓉 发表于:2024-08-16 14:03:17 阅读量:95
<<   >>


powered by kaifamiao