testcontainers/testcontainers-java · error · UnsupportedOperationException
Setting a in not supported in the versions below 22.1.0
Error message
Setting a %s in not supported in the versions below 22.1.0
What it means
CockroachContainer only supports configuring username/password/database via env vars for image versions >= 22.1.0 (FIRST_VERSION_WITH_ENV_VARS_SUPPORT). Calling withUsername/withPassword/withDatabaseName on an older tagged image throws UnsupportedOperationException naming the parameter and the 22.1.0 cutoff.
Solutions
- Upgrade the image to >= 22.1.0, e.g. cockroachdb/cockroach:v22.1.0 or later
- If the old version is required, drop the withUsername/withPassword/withDatabaseName calls and rely on defaults (root user, insecure/dev mode)
- Ensure the docker image name contains a parseable version part so the version check works
Example fix
// before
new CockroachContainer("cockroachdb/cockroach:v21.2.3").withDatabaseName("testdb").withUsername("app");
// after
new CockroachContainer("cockroachdb/cockroach:v22.1.0").withDatabaseName("testdb").withUsername("app"); Defensive patterns
Strategy: validation
Validate before calling
String tag = imageName.substring(imageName.indexOf(':') + 1);
int minor = Integer.parseInt(tag.replaceAll("[^0-9.]+", "").split("\\.")[1]);
if (minor < 1 || parseVersion(tag) < 22.1) { /* skip withUsername/withPassword/withDatabaseName */ } Try / catch
try { container.withUsername("app"); } catch (UnsupportedOperationException e) { /* use default root user for pre-22.1 images */ } Prevention
- Only use withUsername/withPassword/withDatabaseName with CockroachDB >= 22.1.0 images
- Keep image tags versioned so the capability check can parse them
- Centralize container configuration per image version
When it happens
Trigger: new CockroachContainer("cockroachdb/cockroach:v21.2.3").withUsername("foo") (or withPassword/withDatabaseName) — validateIfVersionSupportsUsernameOrPasswordOrDatabase fails isVersionGreaterThanOrEqualTo221.
Common situations: Pinning an older CockroachDB image for compatibility testing and reusing container setup code written for 22.1+; unparseable or missing version part in the image tag.
Understand the failure class
Background: UnsupportedOperationException and "is not supported" errors: when a library deliberately refuses a call — this error's family across 30 libraries.
Related errors
- The ClickHouse does not support this
- Setting a in not supported in the versions below 22.1.0
- getParentLogger not supported
- The Oracle Database driver does not support this
- Error while executing init script
AI-assisted analysis of testcontainers/testcontainers-java@8e549514e3 (2026-09-12).
Data as JSON: /api/errors/a1819d43f62d0288.
Report an issue: GitHub.
Appendix: source
Thrown at modules/cockroachdb/src/main/java/org/testcontainers/cockroachdb/CockroachContainer.java:148
this.password = password;
return this;
}
@Override
public CockroachContainer withDatabaseName(final String databaseName) {
validateIfVersionSupportsUsernameOrPasswordOrDatabase("databaseName");
this.databaseName = databaseName;
return this;
}
private boolean isVersionGreaterThanOrEqualTo221(DockerImageName dockerImageName) {
ComparableVersion version = new ComparableVersion(dockerImageName.getVersionPart().replaceFirst("v", ""));
return version.isGreaterThanOrEqualTo(FIRST_VERSION_WITH_ENV_VARS_SUPPORT);
}
private void validateIfVersionSupportsUsernameOrPasswordOrDatabase(String parameter) {
if (!isVersionGreaterThanOrEqualTo221) {
throw new UnsupportedOperationException(
String.format("Setting a %s in not supported in the versions below 22.1.0", parameter)
);
}
}
@Override
protected void waitUntilContainerStarted() {
getWaitStrategy().waitUntilReady(this);
}
}
View on GitHub (pinned to 8e549514e3)