fluentd-plugin-sql对接oracle-enhanced适配器大小写敏感列名不生效问题
Fluentd SQL输出插件UnknownAttributeError问题排查解决步骤
该问题核心是Fluentd底层的ActiveModel模型和实际数据库表的列名不匹配,MySQL默认大小写不敏感所以无报错,切换到大小写敏感的数据库(如PostgreSQL、SQL Server等)就会触发错误,可按以下步骤排查:
1. 校验目标表实际列名大小写
- 直接查询数据库表结构确认列名的实际写法,以PostgreSQL为例执行命令:
SELECT column_name FROM information_schema.columns WHERE table_name = 'login'; - 如果建表时使用了双引号强制大小写敏感(如列名为
ID、Name而非全小写),需要调整column_mapping配置与实际列名完全一致。
2. 关闭插件自动大小写转换
fluent-plugin-sql默认会自动转换列名大小写,你需要在table配置块中新增参数关闭转换:<table login.*> table 'login' column_mapping 'id:id,name:name,email:email,timestmp:timestmp' # 关闭自动转大写/小写 uppercase_names false lowercase_names false </table>
3. 清理schema缓存
- 插件会缓存表结构信息,结构更新或配置调整后缓存未刷新也会触发该错误:
- 临时验证可直接重启Fluentd进程
- 正式环境可新增配置
schema_cache false关闭缓存,确认问题解决后再按需开启
4. 开启标识符转义
- 大小写敏感的数据库需要对列名加转义符才能正确识别,在全局插件配置中新增
quote_names true,插件会自动给列名添加对应数据库的转义符(PostgreSQL为双引号,MySQL为反引号),避免数据库默认转换标识符大小写。
内容的提问来源于stack exchange,提问作者ADITYA PODUVAL
相关产品推荐
相关产品推荐

