.
Symptom
After configuring IQ Server to use a PostgreSQL database, it may fail to startup. The clm-server.log contains a message about the database URL not being valid H2 database, even though the database is PostgreSQL, is reachable and the URL is valid:
IllegalArgumentException: Not an H2 database URL
'jdbc:postgresql://192.168.2.100:6524/nexusiq'
2024-11-23 19:04:54,037+0000 ERROR [main] *SYSTEM com.sonatype.insight.brain.service.InsightBrainService - Fatal error trying to start server
java.lang.IllegalStateException: Fatal error trying to start server
at com.sonatype.insight.brain.service.InsightBrainService$2.onError(InsightBrainService.java:245)
at io.dropwizard.cli.Cli.run(Cli.java:82)
at com.sonatype.insight.brain.service.InsightBrainService.run(InsightBrainService.java:260)
at com.sonatype.insight.brain.service.InsightBrainService.main(InsightBrainService.java:166)
Caused by: java.lang.IllegalArgumentException: Not an H2 database URL: 'jdbc:postgresql://192.168.2.100:6524/nexusiq'
at com.sonatype.insight.brain.db.H2DatabaseUtil.getDatabasePath(H2DatabaseUtil.java:22)
at com.sonatype.insight.brain.db.migrations.LegacyDataStoreMigrator.migrate(LegacyDataStoreMigrator.java:81)
at com.sonatype.insight.brain.db.migrations.AbstractDatabaseMigrator.migrate(AbstractDatabaseMigrator.java:59)
at com.sonatype.insight.brain.db.migrations.DatabaseMigrators.runMigrators(DatabaseMigrators.java:38)
at com.sonatype.insight.brain.db.migrations.DatabaseMigrations.doMigrateDatabases(DatabaseMigrations.java:158)
at com.sonatype.insight.brain.db.migrations.DatabaseMigrations.migrateDatabase(DatabaseMigrations.java:91)
at com.sonatype.insight.brain.db.DatabaseProvisioner.migrateDatabase(DatabaseProvisioner.java:75)
at com.sonatype.insight.brain.db.DatabaseProvisioner.initializeDatabaseWithMigration(DatabaseProvisioner.java:67)
at com.sonatype.insight.brain.service.InsightBrainService.createAndInitDatabaseContainer(InsightBrainService.java:307)
at com.sonatype.insight.brain.service.InsightBrainService$2.run(InsightBrainService.java:234)
at com.sonatype.insight.brain.service.InsightBrainService$2.run(InsightBrainService.java:217)
at io.dropwizard.cli.ConfiguredCommand.run(ConfiguredCommand.java:98)
at io.dropwizard.cli.Cli.run(Cli.java:78)
Explanation
The error message can be hiding the fact that the table ownership of the PostgreSQL schema and tables is not that of the configured PostgreSQL user.
Advice
Confirm that the database schema and all tables inside PostgreSQL are owned by the same Postgresql database user that you have configured inside IQ Server for the database connection. Correct this if that is not the case.