Ruoyi从mysql切换到postgresql的几个踩坑实战

目录
  • 前言
  • 一、在pom.xml文件中将mysql的依赖jar包替换成postgresql的。
  • 二、mybatis-plus或者分页插件数据库类别支持
  • 三、数据库连接池要做相应调整
  • 四、自动任务依赖,如果您开启了quartz组件,请记得打开以下注释
  • 五、在所有的Mapper.xml配置文件中,找到有sysdate()的函数,需要替换成now()函数。
  • 六、所有带日期查询函数需要替换成如下的代码:
  • 七、mysql find_in_set()函数可以使用ANY()方案。
  • 总结:

前言

因为工程应用需要,需要将ruoyi的数据库支持从mysql切换到postgresql。网上也有一些开源的demo或者已经集成好的框架说明已经将数据库进行了切换。本文将简单介绍在进行数据库切换时,可能会遇到的几个问题,以及怎么解决。

虽然同为关系型数据库,但mysql和postgresql在sql的兼容性方面不是很好,mysql支持的语法在postgresql中很多是不认识的。

闲言少叙,下面进入正文。

一、在pom.xml文件中将mysql的依赖jar包替换成postgresql的。

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

二、mybatis-plus或者分页插件数据库类别支持

上面两个地方红框中的字符都要替换掉。

三、数据库连接池要做相应调整

四、自动任务依赖,如果您开启了quartz组件,请记得打开以下注释

//pg启用特殊配置,否则会报错  update by wuzuhu on 20181224
//prop.put("org.quartz.jobStore.driverDelegateClass", "org.quartz.impl.jdbcjobstore.PostgreSQLDelegate");

五、在所有的Mapper.xml配置文件中,找到有sysdate()的函数,需要替换成now()函数。

六、所有带日期查询函数需要替换成如下的代码:

七、mysql find_in_set()函数可以使用ANY()方案。

比如:

#{deptId} || '' = ANY(STRING_TO_ARRAY(ancestors, ','))

总结:

通过以上步骤基本可以完成ruoyi的数据库从mysql切换到postgresql,希望可以帮助到你。

到此这篇关于Ruoyi从mysql切换到postgresql的几个踩坑实战的文章就介绍到这了,更多相关Ruoyi从mysql切换postgresql内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!

(0)

相关推荐

  • Ruoyi从mysql切换到postgresql的几个踩坑实战

    目录 前言 一.在pom.xml文件中将mysql的依赖jar包替换成postgresql的. 二.mybatis-plus或者分页插件数据库类别支持 三.数据库连接池要做相应调整 四.自动任务依赖,如果您开启了quartz组件,请记得打开以下注释 五.在所有的Mapper.xml配置文件中,找到有sysdate()的函数,需要替换成now()函数. 六.所有带日期查询函数需要替换成如下的代码: 七.mysql find_in_set()函数可以使用ANY()方案. 总结: 前言 因为工程应用需

  • 一次mysql迁移的方案与踩坑实战记录

    目录 背景 方案一:老数据备份 方案二:分表 方案三:迁移至tidb 重点说下同步老数据遇到的坑 最终同步脚本方案 总结 背景 由于历史业务数据采用mysql来存储的,其中有一张操作记录表video_log,每当用户创建.更新或者审核人员审核的时候,对应的video_log就会加一条日志,这个log表只有insert,可想而知,1个video对应多条log,一天10w video,平均统计一个video对应5条log,那么一天50w的log, 一个月50 * 30 = 1500w条记录, 一年就

  • Mysql 切换数据存储目录的实现方法

    Mysql 切换数据存储目录的实现方法 今日,工作中遇到,mysql,存储所在分区空间都已使用完,导致mysql无法正常启动,为此只能迁移数据存储目录. 1.将现有的数据存储目录,转移到别的存储空间,今日转移时 50G的数据文件,拷贝了 30多分钟,有些慢. 2.修改my.cf配置文件 修改 存储目录 [mysqld] datadir=/home/mysql socket=/home/mysql/mysql.sock [mysql_safe] pid-file=/home/mysql/mysql

  • MySQL数据库实现高可用架构之MHA的实战

    目录 一.MySQLMHA介绍 1.1什么是MHA? 1.2MHA的组成 1.3MHA的特点 二.MySQLMHA搭建 1.MHA架构部分 2.故障模拟部分 3.实验环境 三.实验步骤 1.关闭防火墙和SElinux 2.Master.Slave1.Slave2节点上安装mysql5.7 3.修改Master.Slave1.Slave2节点的主机名 4.修改Master.Slave1.Slave2节点的Mysql主配置文件/etc/my.cnf 5.在Master.Slave1.Slave2节点

  • 记一次MySQL更新语句update的踩坑

    背景 最近在一次线上作业过程中执行了一句DML语句,本以为万无一失,结果应用反馈说没有更新,数据还是没有变,最后经过排查才发现是我语句写错了,导致update语句执行的结果与预期不符. 情景再现 为了方便演示,建立一张用户表,同时插入五条数据. create table user( id int(12) comment '用户主键id', name varchar(36) comment '用户名', age int(12) comment '年龄'); insert into user val

  • Docker快速搭建PHP+Nginx+Mysql环境及踩坑

    目录 准备 创建目录 配置PHP 拉取php-fpm镜像 启动php-fpm 配置Nginx 拉取Nginx镜像 配置nginx.conf 启动Nginx 配置MySQL 拉取MySQL镜像 启动MySQL 常见问题 1.thinkphp报错 Undefined class constant 'MYSQL_ATTR_INIT_COMMAND' 2.thinkphp 报错 STORAGE_WRITE_ERROR:./Application/Runtime/Cache/Home/4e64ea6a20

  • MySQL中隐式转换的踩坑记录以及解决方法分享

    目录 复现当时的情景 根源所在 隐式转换的规则 避免进行隐式转换 本来是一个平静而美好的下午,其他部门的同事要一份数据报表临时汇报使用,因为系统目前没有这个维度的功能,所以需要写个SQL马上出一下,一个同事接到这个任务,于是开始在测试环境拼装这条 SQL,刚过了几分钟,同事已经自信的写好了这条SQL,于是拿给DBA,到线上跑一下,用客户端工具导出Excel 就好了,毕竟是临时方案嘛. 就在SQL执行了之后,意外发生了,先是等了一下,发现还没执行成功,猜测可能是数据量大的原因,但是随着时间滴滴答答

  • Vue3+Tsx给路由加切换动画时的踩坑及解决

    目录 项目场景 样式文件 步骤 最终代码 总结 项目场景 用最新的技术栈Vue+Tsx给后台管理系统路由加动画时,语法上与模板语法有些许不同,记录下自己的踩坑记录 样式文件 新建文件transition.scss,这里用的是若依框架人家写好的样式,写好之后在全局引入该样式文件 // global transition css /* fade */ .fade-enter-active, .fade-leave-active { transition: opacity 0.28s; } .fade

  • MySQL主键自增会遇到的坑及解决方法

    目录 1. 为什么不用 UUID 2. 主键自增的问题 2.1 数据插入的三种形式 2.2 innodb_autoinc_lock_mode 2.3 实践 3. 小结 在上篇文章中,松哥和小伙伴们分享了 MySQL 的聚簇索引,也顺便和小伙伴们分析了为什么在 MySQL 中主键不应该使用随机字符串.但是主键不用随机字符串用什么?主键自增?主键自增就是最佳方案吗?有没有其他坑?今天我们就来讨论下这个话题. 1. 为什么不用 UUID 经过上篇文章的介绍,我们知道在 MySQL 中,主键索引就是聚簇

  • 将Django使用的数据库从MySQL迁移到PostgreSQL的教程

    我们已对 Django1.6 app完成了数据库从mysql到PostgreSQL的迁移,如果你的环境很干净,这个过程就会很简单,只要允许syncdb 或者 migrate创建表,truncating表中的数据,然后运行dumpdata 和loaddatamanagement命令就完成了. 第一步,在你的PostgreSQL数据库中创建一个空的实例: CREATE DATABASE dbname OWNER rolename; 第二步,在你的Django中给创建的数据库加上配置 在setting

随机推荐