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

Flink CDC中mysql 字段设置了默认值 ,会返回字段默认值 而不是null?

Flink CDC中mysql 字段设置了默认值 ,然后插入数据时 指定该字段为null 会返回字段默认值 而不是null?

展开
收起
cuicuicuic 2023-11-16 08:14:45 68 0
4 条回答
写回答
取消 提交回答
  • 是的,如果在MySQL中为某个字段设置了默认值,并且在插入数据时没有指定该字段的值,则会使用默认值作为该字段的值。即使在插入数据时指定了该字段的值为null,也会被忽略并使用默认值。
    这是因为MySQL中的默认值是在插入数据时自动应用的,而不是在查询数据时。因此,无论插入数据时是否指定了该字段的值,都会使用默认值作为该字段的值。
    需要注意的是,如果在Flink CDC中从MySQL读取数据时,也可能会遇到类似的问题。因为Flink CDC是从MySQL的二进制日志(binlog)中读取数据的,而这些日志记录的是MySQL数据库的实际操作,包括对字段默认值的应用。因此,在Flink CDC中从MySQL读取数据时,也需要考虑到字段默认值的影响。

    2023-11-16 21:41:14
    赞同 展开评论 打赏
  • 面对过去,不要迷离;面对未来,不必彷徨;活在今天,你只要把自己完全展示给别人看。

    是的,如果你在 MySQL 表中为某个字段设置了默认值,并且在插入数据时指定了该字段为 NULL,那么 MySQL 会使用默认值来填充这个字段。
    这是因为在 MySQL 中,NULL 值表示一个未知或缺失的数据。因此,当你在插入数据时指定某个字段为 NULL 时,MySQL 将认为你没有提供这个字段的值,并且会使用默认值来填充它。
    如果你不希望使用默认值,并且希望在插入数据时指定某个字段为 NULL,你可以显式地将该字段设置为 NULL。例如,假设你有一个名为 my_table 的表,其中有一个名为 value 的字段,你可以使用以下 SQL 语句来插入一条记录,其中 value 字段被设置为 NULL

    INSERT INTO my_table (id, value) VALUES (1, NULL);
    

    在这个例子中,我们使用了 NULL 关键字来显式地将 value 字段设置为 NULL。这样,MySQL 就不会使用默认值来填充这个字段。
    总之,在 MySQL 中,如果你在插入数据时指定了某个字段为 NULL,并且该字段有默认值,则 MySQL 会使用默认值来填充这个字段。如果你想指定该字段为 NULL,你应该显式地将它设置为 NULL

    2023-11-16 13:05:41
    赞同 展开评论 打赏
  • 在使用Flink CDC从MySQL中读取数据时,如果遇到已设置默认值的字段被指定为null的情况,返回的结果会是字段的默认值而不是null。这是因为当插入操作没有为该字段显式指定值时,系统会自动将该字段的值设置为其默认值。

    然而,需要注意的是,在Flink SQL中,Sink表只支持全字段数据的插入,不支持单独指定字段的数据插入和更新操作。因此,如果你想要插入或更新某些特定字段的值,可能需要采用其他方式,比如使用Mybatis等工具进行操作。

    2023-11-16 10:00:45
    赞同 展开评论 打赏
  • 这个之前也有其他人反馈过,我是重写了SchemaBuilder,默认值直接指定为null,此回答整理自钉群“Flink CDC 社区”

    2023-11-16 08:43:19
    赞同 展开评论 打赏

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

相关产品

  • 实时计算 Flink版
  • 相关电子书

    更多
    搭建电商项目架构连接MySQL 立即下载
    搭建4层电商项目架构,实战连接MySQL 立即下载
    PolarDB MySQL引擎重磅功能及产品能力盛大发布 立即下载

    相关镜像