使用Airflow与airflow-dbt-python时遇DBT数据库错误Expecting Value的解决方法
解决Airflow + airflow-dbt-python中的"Expecting value: line 2 column 5"数据库错误
错误日志
[2022-12-27, 13:53:53 CET] {functions.py:226} ERROR - [0m12:53:53.642186 [error] [MainThread]: Encountered an error:
Database Error
Expecting value: line 2 column 5 (char 5)
排查与解决步骤
校验dbt配置文件语法
这个错误本质是JSON/YAML解析失败,优先检查profiles.yml及dbt项目内的配置文件:- 检查引号是否匹配(避免混用单双引号、漏写闭合引号)
- 确认YAML缩进是否合规(必须用空格,不能用制表符,层级对齐)
- 转义字符串中的特殊字符(比如冒号、嵌套引号)
可以用本地YAML/JSON校验工具验证配置文件的语法合法性。
排查数据库连接响应
如果dbt连接数据库时收到非JSON格式的响应,也会触发该错误:- 用
dbt debug命令在Airflow工作节点上模拟连接,查看详细的数据库交互日志 - 检查数据库连接字符串是否正确,确认请求发送到了正确的端点
- 验证数据库是否返回了错误页、非结构化文本而非预期的JSON数据
- 用
对齐执行环境依赖
Airflow工作节点与本地环境的依赖差异可能导致解析错误:- 确认工作节点上的dbt版本与项目要求一致(版本不兼容会改变配置解析逻辑)
- 对比工作节点与本地的Python依赖版本(比如
pyyaml、requests等库),确保适配airflow-dbt-python的要求
检查dbt模型的SQL输出
若模型中使用了返回JSON的宏(如dbt_utils.get_column_values),需确认:- 模型编译后的SQL语句返回结果是合法的JSON结构
- 手动执行模型对应的SQL,验证返回数据是否符合预期
内容的提问来源于stack exchange,提问作者Sebastian Ziegler
相关产品推荐
相关产品推荐

