Flink CDC中File is not a valid field name 遇到过没?Oracle同步,全改成大写了还是有问题,任务同步一段时间就会报错
在Flink CDC中,如果遇到"File is not a valid field name"的错误,通常是在Flink CDC中,如果遇到"File is not a valid field name"的错误,通常是因为源表中存在一个名为"file"的字段,而该字段在目标系统中不存在或名称不同。
对于Oracle同步的情况,即使将所有字段名都改成大写,仍然可能会出现问题。这是因为Oracle数据库中的表结构和字段名是区分大小写的,因此需要确保源表和目标表中的字段名完全一致,包括大小写。
为了解决这个问题,您可以尝试以下步骤:
检查源表和目标表中的字段名是否完全一致,包括大小写。可以使用SQL查询语句来查看表结构,例如:
SELECT column_name, data_type FROM user_tab_columns WHERE table_name = 'source_table';
SELECT column_name, data_type FROM user_tab_columns WHERE table_name = 'target_table';
如果发现字段名不一致,可以修改目标表的结构,将字段名改为与源表一致的名称和大小写。可以使用ALTER TABLE语句来修改表结构,例如:
ALTER TABLE target_table RENAME COLUMN old_field_name TO new_field_name;
修改Flink CDC作业的配置,确保源表和目标表中的字段名一致。可以在Flink CDC作业的配置文件中指定源表和目标表的字段映射关系,例如:
"source": {
"topic": "oracle-source-topic",
"username": "your-username",
"password": "your-password",
"connection-url": "jdbc:oracle:thin:@localhost:1521:orcl",
"table-name": "source_table",
"schema-registry-url": "http://localhost:8081",
"key-converter": "io.debezium.relational.history.FileDatabaseHistory.KeyConverter",
"value-converter": "io.debezium.relational.history.FileDatabaseHistory.ValueConverter",
"column-mappings": [
{ "source": "old_field_name", "target": "new_field_name" }
]
},
"sink": {
"topic": "oracle-sink-topic",
"username": "your-username",
"password": "your-password",
"connection-url": "jdbc:oracle:thin:@localhost:1521:orcl",
"table-name": "target_table",
"schema-registry-url": "http://localhost:8081",
"key-converter": "io.debezium.relational.history.FileDatabaseHistory.KeyConverter",
"value-converter": "io.debezium.relational.history.FileDatabaseHistory.ValueConverter",
"column-mappings": [
{ "source": "new_field_name", "target": "new_field_name" }
]
}
这个之前我们也遇到过,我们推测试在数据获取时可能表结构有所改变,目前需要等3.0版本出来才能增加上表结构变化不出错的适配,可以重启试试看,我们运行了几天没在遇到过这个错误了 ,此回答整理自钉群“Flink CDC 社区”
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。
实时计算Flink版是阿里云提供的全托管Serverless Flink云服务,基于 Apache Flink 构建的企业级、高性能实时大数据处理系统。提供全托管版 Flink 集群和引擎,提高作业开发运维效率。