Failed docker upgrade from v.0.45.0 to v0.46.2

Hello, I am getting these errors when upgrading the docker container from 0.45.0 to 0.46.2, is it possible to fix this?

Thank you.

Diagnostics info:

{
  "browser-info": {
    "language": "es-ES",
    "platform": "Win32",
    "userAgent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/113.0.0.0 Safari/537.36",
    "vendor": "Google Inc."
  },
  "system-info": {
    "file.encoding": "UTF-8",
    "java.runtime.name": "OpenJDK Runtime Environment",
    "java.runtime.version": "11.0.17+8",
    "java.vendor": "Eclipse Adoptium",
    "java.vendor.url": "https://adoptium.net/",
    "java.version": "11.0.17",
    "java.vm.name": "OpenJDK 64-Bit Server VM",
    "java.vm.version": "11.0.17+8",
    "os.name": "Linux",
    "os.version": "5.10.0-11-amd64",
    "user.language": "en",
    "user.timezone": "America/Guayaquil"
  },
  "metabase-info": {
    "databases": [
      "mysql",
      "postgres"
    ],
    "hosting-env": "unknown",
    "application-database": "postgres",
    "application-database-details": {
      "database": {
        "name": "PostgreSQL",
        "version": "13.10 (Ubuntu 13.10-1.pgdg22.04+1)"
      },
      "jdbc-driver": {
        "name": "PostgreSQL JDBC Driver",
        "version": "42.5.0"
      }
    },
    "run-mode": "prod",
    "version": {
      "date": "2022-12-03",
      "tag": "v0.45.0",
      "branch": "release-x.45.x",
      "hash": "4e41d76"
    },
    "settings": {
      "report-timezone": "America/Guayaquil"
    }
  }
}

Logs

metabase-metabase-1  | 2023-05-09 22:33:02,798 INFO db.setup :: Liquibase is ready.
metabase-metabase-1  | 2023-05-09 22:33:02,800 INFO db.liquibase :: Checking if Database has unrun migrations...
metabase-metabase-1  | 2023-05-09 22:33:06,987 INFO db.liquibase :: Database has unrun migrations. Waiting for migration lock to be cleared...
metabase-metabase-1  | 2023-05-09 22:33:07,576 INFO db.liquibase :: Migration lock is cleared. Running migrations...
metabase-metabase-1  | 2023-05-09 22:33:08,287 ERROR metabase.core :: Metabase Initialization FAILED
metabase-metabase-1  | liquibase.exception.LiquibaseException: liquibase.exception.MigrationFailedException: Migration failed for change set migrations/000_migrations.yaml::v46.00-007::snoe:
metabase-metabase-1  |      Reason: liquibase.exception.DatabaseException: ERROR: there is no unique constraint matching given keys for referenced table "report_card" [Failed SQL: (0) ALTER TABLE "public"."action" ADD CONSTRAINT "fk_action_model_id" FOREIGN KEY ("model_id") REFERENCES "public"."report_card" ("id")]
metabase-metabase-1  |  at liquibase.changelog.ChangeLogIterator.run(ChangeLogIterator.java:126)
metabase-metabase-1  |  at liquibase.Liquibase.lambda$null$0(Liquibase.java:265)
metabase-metabase-1  |  at liquibase.Scope.lambda$child$0(Scope.java:180)
metabase-metabase-1  |  at liquibase.Scope.child(Scope.java:189)
metabase-metabase-1  |  at liquibase.Scope.child(Scope.java:179)
metabase-metabase-1  |  at liquibase.Scope.child(Scope.java:158)
metabase-metabase-1  |  at liquibase.Scope.child(Scope.java:243)
metabase-metabase-1  |  at liquibase.Liquibase.lambda$update$1(Liquibase.java:264)
metabase-metabase-1  |  at liquibase.Scope.lambda$child$0(Scope.java:180)
metabase-metabase-1  |  at liquibase.Scope.child(Scope.java:189)
metabase-metabase-1  |  at liquibase.Scope.child(Scope.java:179)
metabase-metabase-1  |  at liquibase.Scope.child(Scope.java:158)
metabase-metabase-1  |  at liquibase.Liquibase.runInScope(Liquibase.java:2405)
metabase-metabase-1  |  at liquibase.Liquibase.update(Liquibase.java:211)
metabase-metabase-1  |  at liquibase.Liquibase.update(Liquibase.java:197)
metabase-metabase-1  |  at liquibase.Liquibase.update(Liquibase.java:193)
metabase-metabase-1  |  at metabase.db.liquibase$migrate_up_if_needed_BANG_.invokeStatic(liquibase.clj:147)
metabase-metabase-1  |  at metabase.db.liquibase$migrate_up_if_needed_BANG_.invoke(liquibase.clj:135)
metabase-metabase-1  |  at metabase.db.setup$fn__50118$migrate_BANG___50123$fn__50124$fn__50125.invoke(setup.clj:79)
metabase-metabase-1  |  at metabase.db.liquibase$fn__46055$do_with_liquibase__46060$fn__46061.invoke(liquibase.clj:64)
metabase-metabase-1  |  at metabase.db.liquibase$fn__46055$do_with_liquibase__46060.invoke(liquibase.clj:56)
metabase-metabase-1  |  at metabase.db.setup$fn__50118$migrate_BANG___50123$fn__50124.invoke(setup.clj:74)
metabase-metabase-1  |  at metabase.db.setup$fn__50118$migrate_BANG___50123.doInvoke(setup.clj:52)
metabase-metabase-1  |  at clojure.lang.RestFn.invoke(RestFn.java:445)
metabase-metabase-1  |  at metabase.db.setup$fn__50182$run_schema_migrations_BANG___50187$fn__50188.invoke(setup.clj:132)
metabase-metabase-1  |  at metabase.db.setup$fn__50182$run_schema_migrations_BANG___50187.invoke(setup.clj:126)
metabase-metabase-1  |  at metabase.db.setup$fn__50235$setup_db_BANG___50240$fn__50241$fn__50244$fn__50245.invoke(setup.clj:157)
metabase-metabase-1  |  at metabase.util.jvm$do_with_us_locale.invokeStatic(jvm.clj:239)
metabase-metabase-1  |  at metabase.util.jvm$do_with_us_locale.invoke(jvm.clj:225)
metabase-metabase-1  |  at metabase.db.setup$fn__50235$setup_db_BANG___50240$fn__50241$fn__50244.invoke(setup.clj:153)
metabase-metabase-1  |  at metabase.db.setup$fn__50235$setup_db_BANG___50240$fn__50241.invoke(setup.clj:152)
metabase-metabase-1  |  at metabase.db.setup$fn__50235$setup_db_BANG___50240.invoke(setup.clj:146)
metabase-metabase-1  |  at metabase.db$setup_db_BANG_$fn__50270.invoke(db.clj:66)
metabase-metabase-1  |  at metabase.db$setup_db_BANG_.invokeStatic(db.clj:61)
metabase-metabase-1  |  at metabase.db$setup_db_BANG_.invoke(db.clj:52)
metabase-metabase-1  |  at metabase.core$init_BANG__STAR_.invokeStatic(core.clj:104)
metabase-metabase-1  |  at metabase.core$init_BANG__STAR_.invoke(core.clj:90)
metabase-metabase-1  |  at metabase.core$init_BANG_.invokeStatic(core.clj:144)
metabase-metabase-1  |  at metabase.core$init_BANG_.invoke(core.clj:139)
metabase-metabase-1  |  at metabase.core$start_normally.invokeStatic(core.clj:156)
metabase-metabase-1  |  at metabase.core$start_normally.invoke(core.clj:150)
metabase-metabase-1  |  at metabase.core$_main.invokeStatic(core.clj:189)
metabase-metabase-1  |  at metabase.core$_main.doInvoke(core.clj:183)
metabase-metabase-1  |  at clojure.lang.RestFn.invoke(RestFn.java:397)
metabase-metabase-1  |  at clojure.lang.AFn.applyToHelper(AFn.java:152)
metabase-metabase-1  |  at clojure.lang.RestFn.applyTo(RestFn.java:132)
metabase-metabase-1  |  at clojure.lang.Var.applyTo(Var.java:705)
metabase-metabase-1  |  at clojure.core$apply.invokeStatic(core.clj:667)
metabase-metabase-1  |  at clojure.core$apply.invoke(core.clj:662)
metabase-metabase-1  |  at metabase.bootstrap$_main.invokeStatic(bootstrap.clj:31)
metabase-metabase-1  |  at metabase.bootstrap$_main.doInvoke(bootstrap.clj:28)
metabase-metabase-1  |  at clojure.lang.RestFn.invoke(RestFn.java:397)
metabase-metabase-1  |  at clojure.lang.AFn.applyToHelper(AFn.java:152)
metabase-metabase-1  |  at clojure.lang.RestFn.applyTo(RestFn.java:132)
metabase-metabase-1  |  at metabase.bootstrap.main(Unknown Source)
metabase-metabase-1  | Caused by: liquibase.exception.MigrationFailedException: Migration failed for change set migrations/000_migrations.yaml::v46.00-007::snoe:
metabase-metabase-1  |      Reason: liquibase.exception.DatabaseException: ERROR: there is no unique constraint matching given keys for referenced table "report_card" [Failed SQL: (0) ALTER TABLE "public"."action" ADD CONSTRAINT "fk_action_model_id" FOREIGN KEY ("model_id") REFERENCES "public"."report_card" ("id")]
metabase-metabase-1  |  at liquibase.changelog.ChangeSet.execute(ChangeSet.java:696)
metabase-metabase-1  |  at liquibase.changelog.visitor.UpdateVisitor.visit(UpdateVisitor.java:56)
metabase-metabase-1  |  at liquibase.changelog.ChangeLogIterator$2.lambda$null$0(ChangeLogIterator.java:113)
metabase-metabase-1  |  at liquibase.Scope.lambda$child$0(Scope.java:180)
metabase-metabase-1  |  at liquibase.Scope.child(Scope.java:189)
metabase-metabase-1  |  at liquibase.Scope.child(Scope.java:179)
metabase-metabase-1  |  at liquibase.Scope.child(Scope.java:158)
metabase-metabase-1  |  at liquibase.changelog.ChangeLogIterator$2.lambda$run$1(ChangeLogIterator.java:112)
metabase-metabase-1  |  at liquibase.Scope.lambda$child$0(Scope.java:180)
metabase-metabase-1  |  at liquibase.Scope.child(Scope.java:189)
metabase-metabase-1  |  at liquibase.Scope.child(Scope.java:179)
metabase-metabase-1  |  at liquibase.Scope.child(Scope.java:158)
metabase-metabase-1  |  at liquibase.Scope.child(Scope.java:243)
metabase-metabase-1  |  at liquibase.changelog.ChangeLogIterator$2.run(ChangeLogIterator.java:93)
metabase-metabase-1  |  at liquibase.Scope.lambda$child$0(Scope.java:180)
metabase-metabase-1  |  at liquibase.Scope.child(Scope.java:189)
metabase-metabase-1  |  at liquibase.Scope.child(Scope.java:179)
metabase-metabase-1  |  at liquibase.Scope.child(Scope.java:158)
metabase-metabase-1  |  at liquibase.Scope.child(Scope.java:243)
metabase-metabase-1  |  at liquibase.Scope.child(Scope.java:247)
metabase-metabase-1  |  at liquibase.changelog.ChangeLogIterator.run(ChangeLogIterator.java:65)
metabase-metabase-1  |  ... 54 more
metabase-metabase-1  | Caused by: liquibase.exception.DatabaseException: ERROR: there is no unique constraint matching given keys for referenced table "report_card" [Failed SQL: (0) ALTER TABLE "public"."action" ADD CONSTRAINT "fk_action_model_id" FOREIGN KEY ("model_id") REFERENCES "public"."report_card" ("id")]
metabase-metabase-1  |  at liquibase.executor.jvm.JdbcExecutor$ExecuteStatementCallback.doInStatement(JdbcExecutor.java:397)
metabase-metabase-1  |  at liquibase.executor.jvm.JdbcExecutor.execute(JdbcExecutor.java:83)
metabase-metabase-1  |  at liquibase.executor.jvm.JdbcExecutor.execute(JdbcExecutor.java:151)
metabase-metabase-1  |  at liquibase.database.AbstractJdbcDatabase.execute(AbstractJdbcDatabase.java:1279)
metabase-metabase-1  |  at liquibase.database.AbstractJdbcDatabase.executeStatements(AbstractJdbcDatabase.java:1261)
metabase-metabase-1  |  at liquibase.changelog.ChangeSet.execute(ChangeSet.java:661)
metabase-metabase-1  |  ... 74 more
metabase-metabase-1  | Caused by: org.postgresql.util.PSQLException: ERROR: there is no unique constraint matching given keys for referenced table "report_card"
metabase-metabase-1  |  at org.postgresql.core.v3.QueryExecutorImpl.receiveErrorResponse(QueryExecutorImpl.java:2676)
metabase-metabase-1  |  at org.postgresql.core.v3.QueryExecutorImpl.processResults(QueryExecutorImpl.java:2366)
metabase-metabase-1  |  at org.postgresql.core.v3.QueryExecutorImpl.execute(QueryExecutorImpl.java:356)
metabase-metabase-1  |  at org.postgresql.jdbc.PgStatement.executeInternal(PgStatement.java:496)
metabase-metabase-1  |  at org.postgresql.jdbc.PgStatement.execute(PgStatement.java:413)
metabase-metabase-1  |  at org.postgresql.jdbc.PgStatement.executeWithFlags(PgStatement.java:333)
metabase-metabase-1  |  at org.postgresql.jdbc.PgStatement.executeCachedSql(PgStatement.java:319)
metabase-metabase-1  |  at org.postgresql.jdbc.PgStatement.executeWithFlags(PgStatement.java:295)
metabase-metabase-1  |  at org.postgresql.jdbc.PgStatement.execute(PgStatement.java:290)
metabase-metabase-1  |  at com.mchange.v2.c3p0.impl.NewProxyStatement.execute(NewProxyStatement.java:75)
metabase-metabase-1  |  at liquibase.executor.jvm.JdbcExecutor$ExecuteStatementCallback.doInStatement(JdbcExecutor.java:393)
metabase-metabase-1  |  ... 79 more
metabase-metabase-1  | 2023-05-09 22:33:08,328 INFO metabase.core :: Metabase Shutting Down ...
metabase-metabase-1  | 2023-05-09 22:33:08,334 INFO metabase.server :: Shutting Down Embedded Jetty Webserver
metabase-metabase-1  | 2023-05-09 22:33:08,353 INFO metabase.core :: Metabase Shutdown COMPLETE```

is it possible that you modified anything in the application database? or that you upgraded and downgraded at some point?

Hi @Luiggi, we moved the DB from Pg15 to Pg13. Could this have caused the issue?

Is there something we can do to upgrade successfully? We use the docker.

Thanks!

try running this:

alter table public.action
    add model_id integer not null CONSTRAINT fk_action_model_id
            references public.report_card
            on delete cascade;

do a backup before running that

@Luiggi hey I tried to alter the table but no luck! I still get this:

Caused by: liquibase.exception.DatabaseException: ERROR: there is no unique constraint matching given keys for referenced table "report_card" [Failed SQL: (0) ALTER TABLE "public"."action" ADD CONSTRAINT "fk_action_model_id" FOREIGN KEY ("model_id") REFERENCES "public"."report_card" ("id")]

I would suggest you set up a completely new Metabase with v45 and postgres and then check the DDL to compare it with your database. Check if there's something weird and fix the issues, then try to upgrade again