mysql 版本为5.6.12, 在插入数据时,DATETIME类型的字段(如update_time字段)设置为NULL时,在从canal客户端获取到的数据中,对应字段的sqlType为1111(OTHER)
而在mysql 5.5.*版本中做同样的测试,DATETIME为null时,canal客户端获取到的对应sqlType为93(TIMESTAMP)
这是因为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