暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

dtp迁移timestamp类型关于时区和精度的问题

roman 2024-10-10
110

dtp平台对timestamp类型迁移存在时区和精度上问题。本文阐述此问题。

问题阐述

客户的表结构如下:

CREATE TABLE `t2` (

`id` int(11) NOT NULL,

`read_at` timestamp NULL DEFAULT NULL

) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;

查看数据如下,能正常显示时间:

dtp任务配置如下(使用默认规则模版):

dtp迁移后的报告中查看原始和目标语句,基本差不多:

在磐维目标查看结果,发现多了时区的信息,这样导致客户业务解析时间报错了!

方案1

将字段的类型由timestamp改成timestamp without time zone

alter table yxgj_manage.t2 alter column read_at type timestamp without time zone;

--由于表太多了,人工去改太麻烦了,工作量大。

方案2

在dtp全量迁移的时候将迁移规则改掉,将字段的类型由timestamp改成timestamp without time zone

迁移成功后查看磐维目标库的数据(不含有时区信息了):

顺便看一下表结构信息:

--这里没有显示精度是多少,是0还是多少呢? 请继续阅读下文解释

方案2补充细节

源端mysql的表结构(使用navicat客户端查看):

目标端磐维的表结构(使用navicat客户端查看):

可以看到磐维侧的精度是6,而源端精度是0,所以可以在方案二中将字段的类型由timestamp改成timestamp(0) without time zone;这样一来就跟源端真正一致了。

迁移成功后查看磐维目标库的数据(不含时区信息,同时精度也改成0了):

「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论