flinksql插入mysql的数据,mysql的id设置了自增,但是flinksql提示要制定主键,制定主键之后,又提示id不能为空,这个问题有遇到过吗?
不带提示这个
这可能是由于 Flink SQL 插入数据时需要指定所有字段,包括具有自动递增值 (auto-increment) 的主键 ID。如果您在 Flink SQL 中指定了主键字段并将其设置为 NULL 或未定义值,则可能导致错误提示 "主键不能为 NULL"。
解决此问题的一种方法是在 Flink SQL 中使用 INSERT INTO 语句时省略主键字段。这样可以避免因指定主键而出现错误。请注意,在执行 INSERT INTO 之前,请确保您的目标表中已经存在一个自动生成主键值的机制(例如 MySQL 中的 AUTO_INCREMENT 属性)。
inser into 的时候指定字段,不要带id,也就是sink-tabl 的主键是业务主键,这个id改成业务主键的
primary key (bill_no,type),jdbc的表,不要带id,此回答整理自钉群“Flink CDC 社区”
这个问题确实存在,并且比较常见。在Flink SQL中,你需要将MySQL中的自增主键字段设置为Flink数据流中的字段之一,通常选择作为流的第一个字段。当插入一条新记录时,可以使用自增ID来指定该记录的唯一标识符,而不必手动指定ID的值。
然而,FlinkSQL本身不支持设置自增 ID,但可以通过一些方法来实现。例如,你可以使用外部库,如 Hive 的 MAX() 函数或 Spark 的 LAG() 函数,这些函数都可以返回一组数据中的最大或最近值,从而模拟自增 ID。另一种方法是在你的DDL中声明这个自增字段。
在使用MySQL CDC源表前,还需要确保你的MySQL和VVP网络是连通的,MySQL服务器的版本为5.6,5.7或8.0.x,并且已开启了Binlog,binlog_row_image已设置为FULL等前提条件。
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。
实时计算Flink版是阿里云提供的全托管Serverless Flink云服务,基于 Apache Flink 构建的企业级、高性能实时大数据处理系统。提供全托管版 Flink 集群和引擎,提高作业开发运维效率。