Hello, 我使用 MySQLDialect 在本地确认了下, 1. 在数据库需要建主键,因为建了主键 “INSERT INTO ... ON DUPLICATE KEY UPDATE”[1] 语句的 upsert 语义才会生效。 2. 需要在 DDL 中定义 'PRIMARY KEY',因为需要根据 ‘PRIMARY KEY’ 确认是否使用 'upsert query' [2]
[1] https://github.com/apache/flink/blob/7eb514a59f6fd117c3535ec4bebc40a375f30b63/flink-connectors/flink-connector-jdbc/src/main/java/org/apache/flink/connector/jdbc/dialect/MySQLDialect.java#L76 [2] https://github.com/apache/flink/blob/7eb514a59f6fd117c3535ec4bebc40a375f30b63/flink-connectors/flink-connector-jdbc/src/main/java/org/apache/flink/connector/jdbc/table/JdbcDynamicOutputFormatBuilder.java#L98 在 2020-11-17 09:28:14,"Tio Planto" <zongsfo...@gmail.com> 写道: >需要建立mysql表request_date,terminal_no的联合主键,mysql的upsert是基于"INSERT INTO ... ON >DUPLICATE KEY UPDATE..."实现的。 >ddl中可以不声明mysql主健。 > >鱼子酱 <384939...@qq.com>于2020年11月17日 周二09:13写道: > >> 我写的是upsert呀。。。 >> insert into 我也测试了,也不行。 >> >> 是MySQL数据库本身里面的表需要建立一个主键吗?还是只有flink里面建表的时候写就行呢? >> >> >> >> -- >> Sent from: http://apache-flink.147419.n8.nabble.com/