Upgrade version from 7.9.6 to 8.9.3 LTS

Hello,
I used SonarQube v7.9.6 with PostgreSQL v9.6 and when I try to upgrade to v8.9.2 I have got this issue:

##################################################################################

2021.11.30 14:44:30 ERROR web[][DbMigrations] #3001 'Create ProjectQualityGates table': failure | time=9ms
2021.11.30 14:44:30 ERROR web[][DbMigrations] Executed DB migrations: failure | time=26ms
2021.11.30 14:44:30 ERROR web[][o.s.s.p.d.m.DatabaseMigrationImpl] DB migration failed | time=67ms
2021.11.30 14:44:30 ERROR web[][o.s.s.p.d.m.DatabaseMigrationImpl] DB migration ended with an exception
org.sonar.server.platform.db.migration.step.MigrationStepExecutionException: Execution of migration step #3001 'Create ProjectQualityGates table' failed
        at org.sonar.server.platform.db.migration.step.MigrationStepsExecutorImpl.execute(MigrationStepsExecutorImpl.java:79)
        at org.sonar.server.platform.db.migration.step.MigrationStepsExecutorImpl.execute(MigrationStepsExecutorImpl.java:67)
        at com.google.common.collect.ImmutableList.forEach(ImmutableList.java:405)
        at org.sonar.server.platform.db.migration.step.MigrationStepsExecutorImpl.execute(MigrationStepsExecutorImpl.java:52)
        at org.sonar.server.platform.db.migration.engine.MigrationEngineImpl.execute(MigrationEngineImpl.java:68)
        at org.sonar.server.platform.db.migration.DatabaseMigrationImpl.doUpgradeDb(DatabaseMigrationImpl.java:105)
        at org.sonar.server.platform.db.migration.DatabaseMigrationImpl.doDatabaseMigration(DatabaseMigrationImpl.java:80)
        at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1128)
        at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628)
        at java.base/java.lang.Thread.run(Thread.java:829)
Caused by: java.lang.IllegalStateException: Fail to execute CREATE TABLE project_qgates (project_uuid VARCHAR (40) NOT NULL,quality_gate_uuid VARCHAR (40) NOT NULL, CONSTRAINT pk_project_qgates PRIMARY KEY (project_uuid))
        at org.sonar.server.platform.db.migration.step.DdlChange$ContextImpl.execute(DdlChange.java:106)
        at org.sonar.server.platform.db.migration.step.DdlChange$ContextImpl.execute(DdlChange.java:86)
        at org.sonar.server.platform.db.migration.step.DdlChange$ContextImpl.execute(DdlChange.java:128)
        at org.sonar.server.platform.db.migration.version.v80.CreateProjectQualityGatesTable.execute(CreateProjectQualityGatesTable.java:55)
        at org.sonar.server.platform.db.migration.step.DdlChange.execute(DdlChange.java:45)
        at org.sonar.server.platform.db.migration.step.MigrationStepsExecutorImpl.execute(MigrationStepsExecutorImpl.java:75)
        ... 9 common frames omitted
Caused by: org.postgresql.util.PSQLException: ERROR: relation "project_qgates" already exists
  Location: File: heap.c, Routine: heap_create_with_catalog, Line: 1077
  Server SQLState: 42P07
        at org.postgresql.core.v3.QueryExecutorImpl.receiveErrorResponse(QueryExecutorImpl.java:2553)
        at org.postgresql.core.v3.QueryExecutorImpl.processResults(QueryExecutorImpl.java:2285)
        at org.postgresql.core.v3.QueryExecutorImpl.execute(QueryExecutorImpl.java:323)
        at org.postgresql.jdbc.PgStatement.executeInternal(PgStatement.java:481)
        at org.postgresql.jdbc.PgStatement.execute(PgStatement.java:401)
        at org.postgresql.jdbc.PgStatement.executeWithFlags(PgStatement.java:322)
        at org.postgresql.jdbc.PgStatement.executeCachedSql(PgStatement.java:308)
        at org.postgresql.jdbc.PgStatement.executeWithFlags(PgStatement.java:284)
        at org.postgresql.jdbc.PgStatement.execute(PgStatement.java:279)
        at org.apache.commons.dbcp2.DelegatingStatement.execute(DelegatingStatement.java:194)
        at org.apache.commons.dbcp2.DelegatingStatement.execute(DelegatingStatement.java:194)
        at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
        at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
        at java.base/java.lang.reflect.Method.invoke(Method.java:566)
        at org.sonar.db.profiling.InvocationUtils.invokeQuietly(InvocationUtils.java:34)
        at org.sonar.db.profiling.ProfilingStatementHandler.invoke(ProfilingStatementHandler.java:41)
        at com.sun.proxy.$Proxy14.execute(Unknown Source)
        at org.sonar.server.platform.db.migration.step.DdlChange$ContextImpl.execute(DdlChange.java:91)
        ... 14 common frames omitted

##################################################################################

I try to upgrade to versions:

  • 8.0.0
  • 8.7.1
  • 8.8.0

and I got the same issue.

Suggestions from this topic did not help me.

Warm welcome @mmatt .

Firstly, apologies for not looking into issue you are having for a long time. Did you manage to resolve it?

If not, then in order to further troubleshoot the issue can you provide results of this queries (executed before trying to upgrade to 8.X):

  1. select table_name from information_schema."tables"
  2. select count(*) from project_qgates
  3. select * from schema_migrations where "version" like '3%'

The reason why we need results of these queries is to be sure that your database schema is not somehow corrupted on 7.9.6.