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/

Reply via email to