搜索

4.5. JDBC 连接器常见问题

download PDF
ExtractNewRecordState 单个消息转换需要吗?
否,实际上是 Debezium JDBC 连接器与其他实现的不同因素之一。虽然连接器能够像竞争者一样获取扁平化的事件,但它还可以原生处理 Debezium 的复杂更改事件结构,而无需任何特定类型的转换。
如果更改了列的类型,或者列被重命名或丢弃,这是否由 schema evolution 处理?
不,Debezium JDBC 连接器不会对现有列进行任何更改。连接器支持的模式演进非常基本。它只是将事件结构中的字段与表的列列表进行比较,然后添加表中尚未定义为列的任何字段。如果列的类型或默认值更改,连接器不会在目标数据库中调整它们。如果重命名了列,则旧列将按原样保留,连接器会将带有新名称的列附加到表中;但是,在旧列中带有数据的现有行保持不变。这些类型的架构更改应该手动处理。
如果列的类型没有解析为我希望的类型,那么我如何强制映射到不同的数据类型?
Debezium JDBC 连接器使用复杂的类型系统来解析列的数据类型。有关此类型系统如何将特定字段的 schema 定义解析为 JDBC 类型的详情,请查看 第 4.1.4 节 “Debezium JDBC 连接器数据和列类型映射的描述” 部分。如果要应用不同的数据类型映射,请手动定义表来显式获取首选的列类型。
如何在不更改 Kafka 主题名称的情况下为表名称指定前缀或后缀?
要在目标表名称中添加前缀或后缀,请调整 table.name.format connector 配置属性以应用您想要的前缀或后缀。例如,若要使用 jdbc_ 前缀所有表名称,请使用值 jdbc_${topic} 指定 table.name.format 配置属性。如果连接器订阅了名为 orders 的主题,则生成的表将创建为 jdbc_orders
为什么有些列会自动加引号,即使未启用标识符引用?
在某些情况下,可能会明确引用特定列或表名称,即使未启用 quote.identifiers。当列或表名称以 开头或使用通常被视为非法语法的特定惯例时,这通常是必需的。例如,当将 primary.key.mode 设置为 kafka 时,如果列的名称被引号,一些数据库只允许列的名称以下划线开头。引用行为是特定于临时的,不同的数据库类型会有所不同。
Red Hat logoGithubRedditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

通过我们的产品和服务,以及可以信赖的内容,帮助红帽用户创新并实现他们的目标。

让开源更具包容性

红帽致力于替换我们的代码、文档和 Web 属性中存在问题的语言。欲了解更多详情,请参阅红帽博客.

關於紅帽

我们提供强化的解决方案,使企业能够更轻松地跨平台和环境(从核心数据中心到网络边缘)工作。

© 2024 Red Hat, Inc.