You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Docker网络中Trino查询MongoDB报错:无列关系不允许SELECT *

问题描述

在Docker网络中部署Trino与MongoDB后,配置的mongodb.properties内容如下:

connector.name=mongodb
mongodb.connection-url=mongodb://admin:admin@mongodb:27017/admin

已创建包含数据的publication集合(_id为主键),通过Mongo Shell可正常查询所有数据,但在Trino Shell执行查询语句SELECT * FROM mongodb.db_name.Publication时,出现错误:

Query failed: SELECT * not allowed from relation that has no columns

已在配置文件中添加mongodb.case-insensitive-name-matching=true,且PostgreSQL连接器执行相同操作完全正常,请问遗漏了什么?

排查与解决方法
  • 核对集合名称大小写:虽然开了mongodb.case-insensitive-name-matching=true,但试试用全小写集合名查询:SELECT * FROM mongodb.db_name.publication。MongoDB集合名本身区分大小写,开关可能在部分场景下没完全生效。
  • 查看集合元数据:先执行DESCRIBE mongodb.db_name.Publication,如果返回空,说明Trino没读到集合字段信息。此时重启Trino服务,确保mongodb.case-insensitive-name-matching=true的配置生效——有些配置改完必须重启才会加载。
  • 检查用户权限:确认连接用的admin用户有目标库db_name的读权限。在Mongo Shell里执行db.getRoles({showPrivileges: true})查看权限,Trino需要能读取集合结构的权限才能识别字段。
  • 验证版本兼容性:旧版本MongoDB和Trino的MongoDB连接器可能存在元数据读取兼容问题,检查两者版本是否匹配,必要时升级连接器或MongoDB。
  • 尝试指定字段查询:如果SELECT *不行,试试查具体字段,比如SELECT _id FROM mongodb.db_name.Publication。如果能返回结果,说明集合里有动态字段导致Trino元数据读取异常,可在配置里加mongodb.mapping=dynamic让Trino自动识别动态字段。

内容的提问来源于stack exchange,提问作者madmax18

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.13 12:03:09