prestodb/presto · critical · ConfigurationException

connection-url is required but was not provided

Error message

connection-url is required but was not provided

What it means

BaseJdbcConfig.validateConfig() requires connection-url; if it is null after configuration binding, it throws ConfigurationException with "connection-url is required but was not provided" when the catalog is loaded.

Source

Thrown at presto-base-jdbc/src/main/java/com/facebook/presto/plugin/jdbc/BaseJdbcConfig.java:194

    @Config("case-sensitive-name-matching")
    @ConfigDescription("Enable case-sensitive matching of schema, table names across the connector. " +
            "When disabled, names are matched case-insensitively using lowercase normalization.")
    public BaseJdbcConfig setCaseSensitiveNameMatching(boolean caseSensitiveNameMatchingEnabled)
    {
        this.caseSensitiveNameMatchingEnabled = caseSensitiveNameMatchingEnabled;
        return this;
    }

    @PostConstruct
    public void validateConfig()
    {
        if (isCaseInsensitiveNameMatching() && isCaseSensitiveNameMatching()) {
            throw new ConfigurationException(ImmutableList.of(new Message("Only one of 'case-insensitive-name-matching=true' or 'case-sensitive-name-matching=true' can be set. " +
                    "These options are mutually exclusive.")));
        }

        if (connectionUrl == null) {
            throw new ConfigurationException(ImmutableList.of(new Message("connection-url is required but was not provided")));
        }
    }

    public int getFetchSize()
    {
        return fetchSize;
    }

    @Config("jdbc-fetch-size")
    @ConfigDescription("Number of rows to fetch from the database at a time")
    public BaseJdbcConfig setFetchSize(int fetchSize)
    {
        this.fetchSize = fetchSize;
        return this;
    }
}

View on GitHub (pinned to 55bb57d202)

Solutions

  1. Add connection-url=jdbc:<driver>://host:port/db to the catalog properties file
  2. Check the property key spelling is exactly connection-url
  3. Ensure the properties file exists in the catalog directory on all coordinator/worker nodes and restart Presto

Example fix

// before (catalog properties)
connector.name=postgresql
// after
connector.name=postgresql
connection-url=jdbc:postgresql://dbhost:5432/mydb
Defensive patterns

Strategy: validation

Validate before calling

// Ensure connection-url exists before deploying a catalog
Properties props = loadCatalogProperties(catalogFile);
String url = props.getProperty("connection-url");
if (url == null || url.isBlank()) throw new IllegalArgumentException(catalogFile + " is missing required connection-url");
if (!url.startsWith("jdbc:")) throw new IllegalArgumentException("connection-url must be a valid JDBC URL");

Prevention

When it happens

Trigger: Connector/catalog properties file missing the connection-url property (or misspelled key), so BaseJdbcConfig binds with connectionUrl == null and @PostConstruct validation fails at catalog deployment.

Common situations: Fresh catalog setup forgetting the required property; typo like connection_url; empty properties file after a bad deploy; catalog added without its properties file.

Related errors


AI-assisted analysis of prestodb/presto@55bb57d202 (2026-09-04). Data as JSON: /api/errors/736c7f8a508ae677. Report an issue: GitHub.