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

Maxmind GeoLite2 City数据库返回不存在的geoname_id原因咨询

这是预期行为,并非Bug

你遇到的情况其实是MaxMind GeoLite2数据库CSV文件的拆分存储逻辑导致的,不属于Bug,下面给你详细解释:

核心原因:CSV文件的分层存储设计

GeoLite2的二进制数据库(.mmdb)会整合从大洲、国家、各级行政区划到城市的全层级地理数据,所以查询IP时能直接返回所有关联的地理条目;但CSV格式的数据库是拆分存储的:

  • GeoLite2-City-Locations-*.csv:仅存储城市级及与城市直接绑定的基础地理信息,不会包含更高层级的大区/一级行政区划数据
  • GeoLite2-City-Subdivisions-*.csv:专门存储各级行政区划(比如国家下的一级大区、二级省份等)的geoname_id与名称的映射关系

验证方法

你可以在下载的CSV压缩包中找到对应语言的Subdivisions文件,执行以下命令:

cat GeoLite2-City-Subdivisions-en.csv | grep 11071621

就能找到对应的Normandy(诺曼底)条目,这正是你在二进制查询结果中看到的一级行政区划。

额外说明

MaxMind的文档中虽然没有单独强调这一点,但CSV文件的命名和拆分逻辑本身就隐含了这种分层设计——如果你需要完整的地理数据关联,需要同时参考Locations和Subdivisions两类CSV文件,而不是只依赖Locations文件。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.12 05:04:21