{"record":{"id":"904afbdbd5d4a410","repo":"SonarSource/sonarqube","slug":"unsupported-dialect-id","errorCode":null,"errorMessage":"Unsupported dialect id ","messagePattern":"Unsupported dialect id ","errorType":"exception","errorClass":"java.lang.IllegalArgumentException","httpStatus":null,"severity":"error","filePath":"server/sonar-db-migration/src/main/java/org/sonar/server/platform/db/migration/def/IntegerColumnDef.java","lineNumber":48,"sourceCode":"\n@Immutable\npublic class IntegerColumnDef extends AbstractColumnDef {\n\n  private IntegerColumnDef(Builder builder) {\n    super(builder.columnName, builder.isNullable, builder.defaultValue);\n  }\n\n  public static Builder newIntegerColumnDefBuilder() {\n    return new Builder();\n  }\n\n  @Override\n  public String generateSqlType(Dialect dialect) {\n    return switch (dialect.getId()) {\n      case PostgreSql.ID, H2.ID -> \"INTEGER\";\n      case MsSql.ID -> \"INT\";\n      case Oracle.ID -> \"NUMBER(38,0)\";\n      default -> throw new IllegalArgumentException(\"Unsupported dialect id \" + dialect.getId());\n    };\n  }\n\n  public static class Builder extends AbstractIntegerColumnDefBuilder<Builder> {\n\n    public IntegerColumnDef build() {\n      validateColumnName(columnName);\n      return new IntegerColumnDef(this);\n    }\n  }\n\n}\n","sourceCodeStart":30,"sourceCodeEnd":61,"githubUrl":"https://github.com/SonarSource/sonarqube/blob/184c821202192afc1c599fc912d0889b69fffa53/server/sonar-db-migration/src/main/java/org/sonar/server/platform/db/migration/def/IntegerColumnDef.java#L30-L61","documentation":"IntegerColumnDef.generateSqlType renders the SQL type for an INTEGER column per dialect (INTEGER for PostgreSQL/H2, INT for MsSql, NUMBER(38,0) for Oracle). Unknown dialect ids throw IllegalArgumentException \"Unsupported dialect id \". It signals migrations being executed against an unrecognized database.","triggerScenarios":"Generating DDL for an integer column during a migration when dialect.getId() is not postgresql, h2, mssql or oracle.","commonSituations":"Configuring an unsupported DB engine (MySQL/MariaDB) for SonarQube; a stub Dialect in tests with an unknown id; corrupted dialect detection producing a bogus id.","solutions":["Use a supported database (PostgreSQL, SQL Server, Oracle, or H2 for dev); change sonar.jdbc.url accordingly.","Verify dialect resolution so a supported Dialect is selected at startup (check sonar.jdbc.driver and the URL).","In unit tests, pass a Dialect whose id is one of the four supported constants.","Add a case for the new dialect id in IntegerColumnDef if you are extending dialect support."],"exampleFix":"// before\nDialect dialect = new TestDialect(\"mysql\");\ncolumnDef.generateSqlType(dialect); // throws\n// after\nDialect dialect = new PostgreSql();\nString sql = columnDef.generateSqlType(dialect); // \"INTEGER\"","handlingStrategy":"validation","validationCode":"if (!Set.of(PostgreSql.ID, H2.ID, MsSql.ID, Oracle.ID).contains(dialect.getId())) {\n  throw new IllegalArgumentException(\"Unsupported dialect for integer columns: \" + dialect.getId());\n}","typeGuard":null,"tryCatchPattern":"try {\n  String sql = integerColumnDef.generateSqlType(dialect);\n} catch (IllegalArgumentException e) {\n  throw new IllegalStateException(\"Use a supported SonarQube database engine\", e);\n}","preventionTips":["Verify sonar.jdbc.url maps to a supported dialect before running migrations.","Keep test Dialect stubs registered to the four supported ids.","Add new dialects centrally so all column definitions cover them."],"tags":["database","migration","dialect","unsupported","sonarqube"],"backgroundTag":"unsupported-enum-value","analyzedSha":"184c821202192afc1c599fc912d0889b69fffa53","analyzedAt":"2026-09-09T12:23:51.573Z","contentChangedAt":"2026-09-09T12:23:51.573Z","schemaVersion":2},"datasetVersion":"2026-09-14T05:17:10.506Z"}