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
- Add connection-url=jdbc:<driver>://host:port/db to the catalog properties file
- Check the property key spelling is exactly connection-url
- 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
- Start every JDBC catalog file with connector.name and connection-url
- Spell the key exactly as connection-url (hyphen, not underscore)
- Verify the properties file is present on all nodes and re-check after config-management changes
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
- Only one of 'case-insensitive-name-matching=true' or 'case-s
- JDBC_ERROR
- PERMISSION_DENIED
- JDBC_ERROR
- JDBC driver class not found: {config.getJdbcDriverName()}
AI-assisted analysis of prestodb/presto@55bb57d202 (2026-09-04).
Data as JSON: /api/errors/736c7f8a508ae677.
Report an issue: GitHub.