Hi,

这个错是因为JDBC connector 不支持INSERT OVERWRITE, 你看的文档是列出了目前 Flink SQL 
支持的INSERT语法,但是不是所有的 connector 都支持  INSERT OVERWRITE, 目前支持的只有 Filesystem 
connector 和 Hive table, 这些表一般不会有主键。其他connector 如 JDBC\ES\HBase 目前不支持  INSERT 
OVERWRITE,现在 JDBC\ES\HBase connector都是支持upsert 插入的[1],
就是在connector 表上定义了PK,结果可以按照PK更新,对于DB类的系统应该都是可以满足业务需求的。 可以分享下需要INSERT 
OVERWRITE到DB的场景吗?

Best
Leonard
[1]https://ci.apache.org/projects/flink/flink-docs-release-1.11/dev/table/connectors/jdbc.html#key-handling
 
<https://ci.apache.org/projects/flink/flink-docs-release-1.11/dev/table/connectors/jdbc.html#key-handling>

> 在 2020年8月1日,19:20,chenxuying <cxydeve...@163.com> 写道:
> 
> Hello
> 请问在flink 1.11.0文档[1]中发现可以使用时可以使用INSERTOVERWRITE... 尝试了一下,但是在执行语句"insert 
> overwrite mysqlsink select a,cast(b as varchar) b from mySource"时报如下错误
> Exception in thread "main" org.apache.flink.table.api.ValidationException: 
> INSERT OVERWRITE requires JDBC:MySQL DynamicTableSink to implement 
> SupportsOverwrite interface.
> 是得自定义connector吗,实现DynamicTableSink?
> 
> 
> 祝好
> chenxuying
> [1] 
> https://ci.apache.org/projects/flink/flink-docs-release-1.11/dev/table/sql/insert.html#syntax

回复