介绍
项目中,需要将数据库由 H2 迁移到 mariadb-5.5.60,迁移过程中遇到的问题汇总如下
表名大小写敏感问题
在 linux 系统中,mysql/mariadb 对表名的大小写是敏感的,因为在 SQL 语句中,使用大写的表名,在 H2 中正常,但是迁移到 mariadb 后,提示找不到表。
解决:将 SQL 语句中的表名改为小写
DATE_FORMAT() 函数问题
在 H2 的 SQL 语句中,使用了 FORMATDATETIME(create_time, 'yyyy-MM-dd HH:')
对日期进行格式化处理,转为 mariadb
后,mariadb
不支持 FORMATDATETIME()
函数,所以使用了 DATE_FORMAT()
函数代替,但是,执行 sql 后发现查不到期望的数据。
测试: 在 H2 控制台执行
|
|
可以得到 2023-08-09 11:
在 mariadb 控制台执行
|
|
得到 yyyy-MM-dd HH:
DATE_FORMAT()
函数的格式化参数和 FORMATDATETIME()
函数不同,将 SQL 修改为 DATE_FORMAT(create_time, '%Y-%m-%d %H:')
后,可以查到正确的数据。
在 mariadb 控制台执行
|
|
得到正确的结果:2023-08-09 11: