【问题标题】:unable to insert into mysql table's timestamp column via Presto connector无法通过 Presto 连接器插入 mysql 表的时间戳列
【发布时间】:2020-03-28 21:14:27
【问题描述】:

我创建了一个带有时间戳列的测试 mysql 表。当我尝试通过 Presto 插入数据时。 Presto 失败。

在 Presto 0.229 CLI 中:
插入 test(id,Date,timestamp) values(6,current_date,localtimestamp);
结果:
查询 20191204_051244_00031_xrwc9 失败:不支持的列类型:时间戳

MYSQL 表:

CREATE TABLE `NewTable` (
`ID`  int(11) NOT NULL ,
`var`  varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT '' ,
`Date`  date NULL DEFAULT '' ,
`Time`  time NULL DEFAULT '' ,
`Timestamp`  timestamp NULL DEFAULT '' ON UPDATE CURRENT_TIMESTAMP ,
PRIMARY KEY (`ID`)
)
ENGINE=InnoDB
DEFAULT CHARACTER SET=utf8 COLLATE=utf8_general_ci
ROW_FORMAT=DYNAMIC
;

【问题讨论】:

    标签: mysql presto


    【解决方案1】:

    我在 Presto 312 周围的 MySQL 连接器中实现了对 timestamp 数据类型的支持。

    Download latest Presto326 并享受。

    或者,下载Starburst Presto 并享受一些额外的好处。

    【讨论】:

      【解决方案2】:

      您不能将 datetime 数据类型默认为空值。

      CREATE TABLE `NewTable` (
      `ID`  int(11) NOT NULL ,
      `var`  varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT '' ,
      `Date`  date NULL DEFAULT NULL ,
      `Time`  time NULL DEFAULT NULL ,
      `Timestamp`  timestamp NULL DEFAULT NULL ON UPDATE CURRENT_TIMESTAMP ,
      PRIMARY KEY (`ID`)
      )
      ENGINE=InnoDB
      DEFAULT CHARACTER SET=utf8 COLLATE=utf8_general_ci
      ROW_FORMAT=DYNAMIC
      ;
      

      【讨论】:

        猜你喜欢
        • 2021-12-13
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2018-09-10
        • 2015-02-26
        • 1970-01-01
        相关资源
        最近更新 更多