mysql数据迁移遇到的问题总结datetime,timestamp,only_full_group_by,时区
MySql数据迁移datetimetimestamp sql_modeonly_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的配置文件解决问题。
这是近期数据库迁移出现问题的总结。
更多推荐
已为社区贡献1条内容
所有评论(0)