开发者社区 > 大数据与机器学习 > 实时计算 Flink > 正文

大家有没有遇到过这个错?同步MySQL的时候,明明是非空的主键,还是报是空值,不能插入

org.apache.flink.table.api.TableException: Column 'cusid' is NOT NULL, however, a null value is being written into it. You can set job configuration 'table.exec.sink.not-null-enforcer'='drop' to suppress this exception and drop such records silently.

展开
收起
游客3oewgrzrf6o5c 2022-08-17 17:51:24 1106 0
1 条回答
写回答
取消 提交回答
  • 全栈JAVA领域创作者

    这个错误通常是因为在插入数据时,MySQL数据库中对应的主键列值为空。即使该列被定义为非空(NOT NULL),但如果没有提供有效的值,则会抛出此异常。

    要解决这个问题,您可以尝试以下几种方法:

    1. 确保在插入数据之前,主键列的值已经被正确地设置。您可以使用SELECT语句来检查该列的值是否为空。

    2. 如果您的应用程序允许插入空值,则可以将“table.exec.sink.not-null-enforcer”配置项设置为“drop”。这将使Flink忽略非空约束并删除这些记录。但是请注意,这可能会导致数据丢失或不一致性问题。

    3. 您可以使用“table.exec.sink.ignore-nulls”配置项来禁用非空约束。这将使Flink接受任何值,包括空值。但是请注意,这可能会导致数据不一致性问题。

    无论您选择哪种方法,都应该仔细考虑其影响,并确保您的应用程序能够处理可能出现的问题。

    2023-06-18 10:57:02
    赞同 展开评论 打赏

实时计算Flink版是阿里云提供的全托管Serverless Flink云服务,基于 Apache Flink 构建的企业级、高性能实时大数据处理系统。提供全托管版 Flink 集群和引擎,提高作业开发运维效率。

相关电子书

更多
One Box: 解读事务与分析一体化数据库 HybridDB for MySQL 立即下载
One Box:解读事务与分析一体化数据库HybridDB for MySQL 立即下载
如何支撑HTAP场景-HybridDB for MySQL系统架构和技术演进 立即下载

相关镜像