合流:错误无法运行表TimestampIncrementableQuerier mysql jdbc的查询

合流:错误无法运行表TimestampIncrementableQuerier mysql jdbc的查询,jdbc,apache-kafka,apache-kafka-connect,confluent-platform,confluent-schema-registry,Jdbc,Apache Kafka,Apache Kafka Connect,Confluent Platform,Confluent Schema Registry,我试图在MySQL中使用模式时间戳,行数有限,因为我的表大小是2.6GB 以下是我正在使用的连接器属性: { "name": "jdbc_source_mysql_registration_query", "config": { "connector.class": "io.confluent.connect.jdbc.JdbcSourceConnector", "key.converter":

我试图在MySQL中使用模式时间戳,行数有限,因为我的表大小是2.6GB

以下是我正在使用的连接器属性:

{
        "name": "jdbc_source_mysql_registration_query",
        "config": {
                 "connector.class": "io.confluent.connect.jdbc.JdbcSourceConnector",
                 "key.converter": "io.confluent.connect.avro.AvroConverter",
                 "key.converter.schema.registry.url": "http://localhost:8081",
                 "value.converter": "io.confluent.connect.avro.AvroConverter",
                 "value.converter.schema.registry.url": "http://localhost:8081",
                 "connection.url": "jdbc:mysql://localhost:3310/users?zeroDateTimeBehavior=ROUND&useCursorFetch=true&defaultFetchSize=1000&user=kotesh&password=kotesh",
                 "query": "SELECT matriid,DateUpdated  from users.employee WHERE date(DateUpdated)>='2018-11-28' ",
                 "mode": "timestamp",
                 "timestamp.column.name": "DateUpdated",
                 "validate.non.null": "false",
                 "topic.prefix": "mysql-prod-kot-"
        }
}
我得到的信息如下:

INFO timestampincrementablequeryer{table=null,query='SELECT matriid,从users.employee更新的日期,其中 dateDateUpdated>=“2018-11-28,topicPrefix='mysql-prod-kot-”, incrementingColumn=,timestampColumns=[DateUpdated]}准备好的SQL 查询:选择matriid,DateUpdated from users.employee WHERE dateDateUpdated>='2018-11-28'其中DateUpdated>?和 日期更新<?按日期更新的订单ASC io.confluent.connect.jdbc.source.TimestampIncrementingTableQuerier:161 [2018-11-29 17:29:00981]对表TimeStampIncrementTableQuerier{table=null,query='SELECT'运行查询失败 matriid,从users.employee更新的日期,其中 dateDateUpdated>=“2018-11-28,topicPrefix='mysql-prod-kot-”, incrementingColumn=,timestampColumns=[DateUpdated]}:{} io.confluent.connect.jdbc.source.JdbcSourceTask:328 sql.SQLSyntaxErrorException:您的sql语法有错误;检查与MySQL服务器版本对应的手册 有关使用“WHERE DateUpdated>”1970-01-01附近的正确语法 00:00:00.0'和更新日期<'2018-11-29 17'第1行


错误如下所示:

java.sql.SQLSyntaxErrorException: You have an error in your SQL syntax; 
check the manual that corresponds to your MySQL server version for the right syntax to use near 
'WHERE `DateUpdated` > '1970-01-01 00:00:00.0' AND `DateUpdated` < '2018-11-29 17' at line 1
这是因为您使用的是query,但也使用mode:timestamp,因此当您在查询中也指定了WHERE子句时,连接器会尝试附加它自己的WHERE子句,这会导致无效的SQL

对于JDBC源连接器,按照:

为了正确构造增量查询,必须能够在此查询中附加WHERE子句,即不能使用WHERE子句。如果使用WHERE子句,它必须自己处理增量查询


错误如下所示:

java.sql.SQLSyntaxErrorException: You have an error in your SQL syntax; 
check the manual that corresponds to your MySQL server version for the right syntax to use near 
'WHERE `DateUpdated` > '1970-01-01 00:00:00.0' AND `DateUpdated` < '2018-11-29 17' at line 1
这是因为您使用的是query,但也使用mode:timestamp,因此当您在查询中也指定了WHERE子句时,连接器会尝试附加它自己的WHERE子句,这会导致无效的SQL

对于JDBC源连接器,按照:

为了正确构造增量查询,必须能够在此查询中附加WHERE子句,即不能使用WHERE子句。如果使用WHERE子句,它必须自己处理增量查询


这是因为您试图同时使用两种模式:时间戳和查询。TimestampIncrementingTableQuerier将WHERE子句追加到与查询中现有WHERE子句冲突的查询中

这一点很清楚:

质疑

如果指定,则执行查询以选择新的或更新的行。使用 此设置如果要联接表,请在中选择列的子集 表或筛选器数据。如果使用,此连接器将仅复制数据 使用此查询-将禁用整个表复制。不同的 查询模式仍可用于增量更新,但为了 正确构造增量查询时,必须能够 将WHERE子句附加到此查询,即可以使用no WHERE子句 习惯于如果使用WHERE子句,它必须处理增量查询 本身

作为一种变通方法,您可以根据所使用的SQL风格将查询修改为

SELECT * FROM ( SELECT * FROM table WHERE ...)

例如,在您的情况下,查询应该是

"query":"SELECT * FROM (SELECT matriid,DateUpdated  from users.employee WHERE date(DateUpdated)>='2018-11-28') o"

这是因为您试图同时使用两种模式:时间戳和查询。TimestampIncrementingTableQuerier将WHERE子句追加到与查询中现有WHERE子句冲突的查询中

这一点很清楚:

质疑

如果指定,则执行查询以选择新的或更新的行。使用 此设置如果要联接表,请在中选择列的子集 表或筛选器数据。如果使用,此连接器将仅复制数据 使用此查询-将禁用整个表复制。不同的 查询模式仍可用于增量更新,但为了 正确构造增量查询时,必须能够 将WHERE子句附加到此查询,即可以使用no WHERE子句 习惯于如果使用WHERE子句,它必须处理增量查询 本身

作为一种变通方法,您可以根据所使用的SQL风格将查询修改为

SELECT * FROM ( SELECT * FROM table WHERE ...)

例如,在您的情况下,查询应该是

"query":"SELECT * FROM (SELECT matriid,DateUpdated  from users.employee WHERE date(DateUpdated)>='2018-11-28') o"

跟进问题-如何指定连接器的起始时间戳跟进问题-如何指定连接器的起始时间戳