添加链接
link管理
链接快照平台
  • 输入网页链接,自动生成快照
  • 标签化管理网页链接
相关文章推荐
温暖的小马驹  ·  Amazon RDS for MySQL ...·  16 小时前    · 
发怒的红薯  ·  Mysql中case ...·  21 小时前    · 
谈吐大方的楼房  ·  spark ...·  21 小时前    · 
气宇轩昂的弓箭  ·  mysql ...·  21 小时前    · 
傻傻的伤痕  ·  贴吧404·  1 周前    · 
唠叨的石榴  ·  PL/SQL连接超时 - Oracle ...·  1 周前    · 
开发者社区 >

问题描述:

mysql 版本为5.6.12, 在插入数据时,DATETIME类型的字段(如update_time字段)设置为NULL时,在从canal客户端获取到的数据中,对应字段的sqlType为1111(OTHER)

而在mysql 5.5.*版本中做同样的测试,DATETIME为null时,canal客户端获取到的对应sqlType为93(TIMESTAMP)

这个是BUG么?

原提问者GitHub用户yancai

这是因为MySQL 5.6.12版本对DATETIME类型的数据进行了修改,将原来的DATETIME类型改成了新的DATETIME(DATETIME)类型。而MySQL 5.5.x版本则仍然使用原来的DATETIME类型。

在MySQL 5.6.12版本中,当设置一个DATETIME类型的字段为NULL时,它会被转换成一个空字符串"",而不是一个NULL值。因此,在从canal客户端获取到的数据中,对应字段的sqlType被设置为了1111(OTHER),表示该字段是一个非数值型字段。

而在MySQL 5.5.x版本中,当设置一个DATETIME类型的字段为NULL时,它会被转换成一个NULL值,因此在从canal客户端获取到的数据中,对应字段的sqlType被设置为了93(TIMESTAMP),表示该字段是一个日期时间类型字段。

为了解决这个问题,可以在MySQL 5.6.12版本中将DATETIME类型的字段显式地标记为NULL,例如使用DEFAULT NULL或者SET NULL语法。这样可以确保在从canal客户端获取到的数据中,对应字段的sqlType被正确地解析出来。

2023-05-10 08:20:16 企业邮箱发送邮件时,若出现投递失败产生退信,内容提示包含如下: the mta server of * reply:550 failed to meet SPF requirements 或者 the mta server of 163.com — 163mx01.mxmail.netease.com(220.181.14.141) reply:550 MI:SPF mx14,QMCowECpA0qTiftVaeB3Cg—.872S2 1442548128 http://mail.163.com/help 304047