嵌入Apache Superset仪表盘至网页时遇MySQLdb.OperationalError错误
解决Apache Superset嵌入仪表盘时MySQL 1054字段不存在错误
出现MySQLdb.OperationalError: (1054, "Unknown column 'customer_id' in 'where clause'")错误,本质是Superset生成的SQL里引用了不存在的customer_id字段,下面是排查和解决的步骤:
检查嵌入URL的过滤参数:
看看你嵌入网页的Superset链接里有没有带filters参数,比如类似?filters=[{"col":"customer_id","opr":"==","value":"123"}]这种。如果有,要么删掉这个参数,要么确认你的数据源表确实存在customer_id字段再保留。排查仪表盘内的图表过滤规则:
登录Superset后台,打开出问题的仪表盘,逐个编辑里面的图表:- 进入图表编辑页,切换到「Filters」标签
- 查看是否有基于
customer_id的过滤条件,有的话直接删除,或者替换成数据源中存在的字段
检查仪表盘全局过滤器:
如果仪表盘添加了全局过滤器组件,点击组件的编辑按钮,查看是否绑定了customer_id字段。如果是,取消绑定或者换成存在的字段。核对数据源配置:
- 如果是自定义SQL数据源,打开数据源的编辑页,查看SQL语句里有没有
customer_id的引用,确认实际数据库表中是否存在这个字段,或者关联表时是不是写错了字段名(比如把customers.id写成了customer_id) - 如果是直接选表的数据源,查看表结构,确认
customer_id字段是否存在,不存在的话就要修改所有用到这个字段的过滤或图表配置
- 如果是自定义SQL数据源,打开数据源的编辑页,查看SQL语句里有没有
通过查询日志定位源头:
你已经拿到了出错的SQL,把这个SQL复制到数据库客户端执行,确认字段确实不存在。然后在Superset的「Queries」页面搜索这个SQL,找到对应的图表或过滤器后针对性修改配置。
内容的提问来源于stack exchange,提问作者Rashmi A
相关产品推荐
相关产品推荐

