lionsoul2014/ip2region · error

failed to load vector index from

Error message

failed to load vector index from `%s`: %w

What it means

Go CLI helper: xdb.LoadVectorIndexFromFile failed while reading the fixed-size vector index block from the xdb for the vectorIndex cache policy; the wrapped error is typically a short read or I/O failure.

Solutions

  1. Verify the xdb file is complete and not truncated
  2. Fall back to the 'file' cache policy which needs no preloaded index
  3. Fix underlying disk/permission problems on the db file
Defensive patterns

Strategy: try-catch

When it happens

Trigger: Thrown at binding/golang/main.go:108 when the library encounters an invalid state.

Common situations: See trigger scenarios.


AI-assisted analysis of lionsoul2014/ip2region@c1a1fc7d59 (2026-09-02). Data as JSON: /api/errors/990ff12928fae9b3. Report an issue: GitHub.

Appendix: source

Thrown at binding/golang/main.go:108

	// auto-detect the ip version from the xdb header
	header, err := xdb.LoadHeader(handle)
	if err != nil {
		return nil, fmt.Errorf("failed to load header from `%s`: %s", dbPath, err)
	}

	version, err := xdb.VersionFromHeader(header)
	if err != nil {
		return nil, fmt.Errorf("failed to detect IP version from `%s`: %s", dbPath, err)
	}

	switch cachePolicy {
	case "nil", "file":
		return xdb.NewWithFileOnly(version, dbPath)
	case "vectorIndex":
		vIndex, err := xdb.LoadVectorIndexFromFile(dbPath)
		if err != nil {
			return nil, fmt.Errorf("failed to load vector index from `%s`: %w", dbPath, err)
		}

		return xdb.NewWithVectorIndex(version, dbPath, vIndex)
	case "content":
		cBuff, err := xdb.LoadContentFromFile(dbPath)
		if err != nil {
			return nil, fmt.Errorf("failed to load content from '%s': %w", dbPath, err)
		}

		return xdb.NewWithBuffer(version, cBuff)
	default:
		return nil, fmt.Errorf("invalid cache policy `%s`, options: file/vectorIndex/content", cachePolicy)
	}
}

func printHelp() {
	fmt.Printf("ip2region xdb searcher\n")
	fmt.Printf("%s [command] [command options]\n", os.Args[0])

View on GitHub (pinned to c1a1fc7d59)