合流:错误无法运行表TimestampIncrementableQuerier mysql jdbc的查询
我试图在MySQL中使用模式时间戳,行数有限,因为我的表大小是2.6GB 以下是我正在使用的连接器属性:合流:错误无法运行表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":
{
"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"
跟进问题-如何指定连接器的起始时间戳跟进问题-如何指定连接器的起始时间戳