diff --git a/client-adapter/common/src/main/java/com/alibaba/otter/canal/client/adapter/support/JdbcTypeUtil.java b/client-adapter/common/src/main/java/com/alibaba/otter/canal/client/adapter/support/JdbcTypeUtil.java index c24ff7de..b9493634 100644 --- a/client-adapter/common/src/main/java/com/alibaba/otter/canal/client/adapter/support/JdbcTypeUtil.java +++ b/client-adapter/common/src/main/java/com/alibaba/otter/canal/client/adapter/support/JdbcTypeUtil.java @@ -68,7 +68,13 @@ public class JdbcTypeUtil { } public static Object typeConvert(String columnName, String value, int sqlType, String mysqlType) { - if (value == null || value.equals("")) { + if (value == null + || (value.equals("") + && !("longtext".equals(mysqlType) + || "text".equals(mysqlType) + || sqlType == Types.CHAR + || sqlType == Types.VARCHAR + || sqlType == Types.LONGVARCHAR))) { return null; } @@ -118,10 +124,8 @@ public class JdbcTypeUtil { value = value.trim().replace(" ", "T"); DateTime dt = new DateTime(value); res = new Date(dt.toDate().getTime()); - } else { - res = null; + break; } - break; case Types.TIME: value = "T" + value; DateTime dt = new DateTime(value); @@ -132,10 +136,8 @@ public class JdbcTypeUtil { value = value.trim().replace(" ", "T"); dt = new DateTime(value); res = new Timestamp(dt.toDate().getTime()); - } else { - res = null; + break; } - break; case Types.CLOB: default: res = value; diff --git a/client-adapter/rdb/src/main/java/com/alibaba/otter/canal/client/adapter/rdb/support/SyncUtil.java b/client-adapter/rdb/src/main/java/com/alibaba/otter/canal/client/adapter/rdb/support/SyncUtil.java index 6be006d2..04305ced 100644 --- a/client-adapter/rdb/src/main/java/com/alibaba/otter/canal/client/adapter/rdb/support/SyncUtil.java +++ b/client-adapter/rdb/src/main/java/com/alibaba/otter/canal/client/adapter/rdb/support/SyncUtil.java @@ -200,7 +200,7 @@ public class SyncUtil { DateTime dt = new DateTime(v); pstmt.setDate(i, new Date(dt.toDate().getTime())); } else { - pstmt.setNull(i, type); + pstmt.setObject(i, value); } } else { pstmt.setNull(i, type); @@ -232,7 +232,7 @@ public class SyncUtil { DateTime dt = new DateTime(v); pstmt.setTimestamp(i, new Timestamp(dt.toDate().getTime())); } else { - pstmt.setNull(i, type); + pstmt.setObject(i, value); } } else { pstmt.setNull(i, type);