代码之家  ›  专栏  ›  技术社区  ›  Alex Kamornikov

合流jdbc连接器无法使用时间戳列进行增量查询

  •  0
  • Alex Kamornikov  · 技术社区  · 7 年前

    连接器的加载:

    {
      "name": "jdbc-source-test",
      "config": {
        "connector.class": "io.confluent.connect.jdbc.JdbcSourceConnector",
        "connection.url": "jdbc:mysql://localhost:3306/test?user=root&password=password",
        "table.whitelist":"test",
        "mode": "timestamp",
        "timestamp.column.name":"create_time",
        "topic.prefix": "test-mysql-jdbc-",
        "name":"jdbc-source-test"
      }
    }
    

    将下一条消息放入日志:

    [2018-12-12 17:33:14,225] ERROR WorkerSourceTask{id=jdbc-source-test-0} Task threw an uncaught and unrecoverable exception (org.apache.kafka.connect.runtime.WorkerTask:177)
    org.apache.kafka.connect.errors.ConnectException: Cannot make incremental queries using timestamp columns [create_time] on `test`.`test` because all of these columns nullable.
    

    我建议它不起作用,因为这个列的类型是bigint(20)。有什么解决办法吗? 融合版本-5.0.1。

    0 回复  |  直到 7 年前
        1
  •  3
  •   turkogluc    6 年前

    我在Postgresql上也遇到了同样的错误,在数据库中将错误中提到的timestamp列设置为NOT NULL修复了这个错误。

    另一个选择是使用 validate.non.null : false

    验证不。无效的 :默认情况下,JDBC连接器将验证 所有递增和时间戳表的 用作其ID/时间戳的列。

    如果表没有启动,JDBC连接器将无法启动。设定这个 设置为false将禁用这些检查。

        2
  •  0
  •   Willie Cheng danbulochkin    4 年前

    解决此问题的简单方法是在配置中添加“validate.non.null”:“false”

    {
      "name": "jdbc-source-test",
      "config": {
        "connector.class": "io.confluent.connect.jdbc.JdbcSourceConnector",
        "connection.url": "jdbc:mysql://localhost:3306/test?user=root&password=password",
        "table.whitelist":"test",
        "mode": "timestamp",
        "timestamp.column.name":"create_time",
        "topic.prefix": "test-mysql-jdbc-",
    
    
         "validate.non.null": "false"
    
      }
    }