googleapis/mcp-toolbox · error
unsupported DatabaseVersion %q: expected a value starting wi
Error message
unsupported DatabaseVersion %q: expected a value starting with POSTGRES, MYSQL, or SQLSERVER
What it means
The DatabaseVersion parser in internal/util/cloudsqlconnect/types.go maps a Cloud SQL database version string to an engine type by prefix: POSTGRES_*, MYSQL_*, SQLSERVER_*. If the uppercased version string starts with none of these prefixes, it returns this error because the engine family cannot be determined.
Source
Thrown at internal/util/cloudsqlconnect/types.go:397
}
// ParseDatabaseTypeStrict is like ParseDatabaseType but returns an error
// instead of silently defaulting when the DatabaseVersion prefix is not one
// of the engines this package supports. Use it when auto-detecting the
// engine from a live sqladmin response so a new Cloud SQL engine (or a
// malformed value) surfaces a clear diagnostic instead of producing wrong
// output.
func ParseDatabaseTypeStrict(version string) (DatabaseType, error) {
upper := strings.ToUpper(version)
switch {
case strings.HasPrefix(upper, "POSTGRES"):
return PostgreSQL, nil
case strings.HasPrefix(upper, "MYSQL"):
return MySQL, nil
case strings.HasPrefix(upper, "SQLSERVER"):
return SQLServer, nil
default:
return "", fmt.Errorf("unsupported DatabaseVersion %q: expected a value starting with POSTGRES, MYSQL, or SQLSERVER", version)
}
}
View on GitHub (pinned to 8cc6e09de2)
Solutions
- Supply a version string with one of the required prefixes: POSTGRES_ (e.g. POSTGRES_16), MYSQL_ (e.g. MYSQL_8_0), or SQLSERVER_ (e.g. SQLSERVER_2022_STANDARD)
- Check the exact databaseVersion via `gcloud sql instances describe <instance> --format='value(databaseVersion)'` and copy it verbatim
- Fix typos like 'POSTGRESQL_16' to 'POSTGRES_16'
Example fix
// before
parseDatabaseVersion("POSTGRESQL_16")
// after
parseDatabaseVersion("POSTGRES_16") Defensive patterns
Strategy: validation
Validate before calling
upper := strings.ToUpper(version)
if !strings.HasPrefix(upper, "POSTGRES") && !strings.HasPrefix(upper, "MYSQL") && !strings.HasPrefix(upper, "SQLSERVER") {
return fmt.Errorf("databaseVersion %q must start with POSTGRES_, MYSQL_, or SQLSERVER_", version)
} Type guard
func isKnownDatabaseVersion(v string) bool {
u := strings.ToUpper(v)
return strings.HasPrefix(u, "POSTGRES") || strings.HasPrefix(u, "MYSQL") || strings.HasPrefix(u, "SQLSERVER")
} Try / catch
dbType, err := parseDatabaseVersion(version)
if err != nil {
return fmt.Errorf("%w; check 'gcloud sql instances describe --format=value(databaseVersion)'", err)
} Prevention
- Copy databaseVersion verbatim from `gcloud sql instances describe`
- Use POSTGRES_xxx, not POSTGRESQL_xxx, and never MariaDB/AlloyDB version strings
- Default the version from the tool's own engine type rather than free-form user input
When it happens
Trigger: Passing a version like 'POSTGRES', blank string, a typo ('POSTGRESQL_16', 'MYSQL5_7' without underscore prefix form 'MYSQL_5_7' is fine, but 'MARIADB_10' is not), or an unsupported engine prefix ('SQLSERVER_2019_EXPRESS' works; 'ORACLE_19' does not).
Common situations: Using Cloud SQL edition/version strings from other products (AlloyDB, Spanner, MariaDB), passing the full instance 'databaseVersion' field with unexpected casing handled upstream but wrong product, or an empty/unset config field.
Related errors
- invalid connection name %q: project, region, and instance mu
- `introspectionEndpoint` is not allowed when `mcpEnabled` is
- `introspectionMethod` is not allowed when `mcpEnabled` is fa
- `introspectionParamName` is not allowed when `mcpEnabled` is
- error parsing argument: %w
AI-assisted analysis of googleapis/mcp-toolbox@8cc6e09de2 (2026-09-05).
Data as JSON: /api/errors/84f488573f919a9f.
Report an issue: GitHub.