mysql数据迁移遇到的问题总结datetime,timestamp,only_full_group_by,时区

因为近期租用的服务器到期,涉及到数据库的迁移,出现了一些问题,现在总结一下:

一、由原低版本数据库导入到高版本数据时,发现某些字段出现错误,导致导入失败,主要集中在timestamp这个数据格式上。

新数据库版本
原数据库版本

导入报错

`create_time` timestamp(0) NOT NULL DEFAULT '0000-00-00 00:00:00' COMMENT '创建时间'

通过查询博客,了解到timestamp和datetime的区别
TIMESTAMP和DATETIME的区别以及选择
在使用中,向前端返回时间是,都可以使用@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")进行格式转换,这也是我一直没发现sql导入出现问题的原因。
处理方式:1,删除原来的DEFAULT '0000-00-00 00:00:00'
2,变更数据格式;
3,更换数据库版本。

二、. 在配置数据库连接时,8.0.19版本的连接需要在“url”中配置时区,如东八区配置serverTimezone=Asia/Shanghai

三、 对于sql语句中,根据某字段分组或排序时,假如字段在某行为空,在8.1以上版本中会报异常

1055 - Expression #2 of SELECT list is not in GROUP BY clause and contains nonaggregated column "**字段名**" which is not functionally dependent on columns in GROUP BY clause; this is incompatible with sql_mode=only_full_group_by

根据博客中的各种set,修改mysql配置文件均未能得到解决,这个需要在java代码中进行规避,以免影响业务。这篇文章很有见解。关于MySQL中only_full_group_by模式的一点个人理解
通过修改自己的sql语句,而不是修改mysql的配置文件解决问题。

这是近期数据库迁移出现问题的总结。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值