H2 to Postgres 14 failure on foreign key

Hello!

While following the direction from the Metabase site here to migrate from H2 to Postgres 14.6 (AWS RDS instance), it failed after the step where it reapplies the DB constraints.

Any ideas or suggestions would be greatly appreciated. Thanks!

org.postgresql.util.PSQLException: ERROR: insert or update on table "report_dashboardcard" violates foreign key constraint "fk_report_dashboardcard_ref_dashboard_tab_id"
  Detail: Key (dashboard_tab_id)=(1) is not present in table "dashboard_tab".
        at org.postgresql.core.v3.QueryExecutorImpl.receiveErrorResponse(QueryExecutorImpl.java:2676)
        at org.postgresql.core.v3.QueryExecutorImpl.processResults(QueryExecutorImpl.java:2366)
        at org.postgresql.core.v3.QueryExecutorImpl.execute(QueryExecutorImpl.java:356)
        at org.postgresql.core.v3.QueryExecutorImpl.execute(QueryExecutorImpl.java:316)
        at org.postgresql.jdbc.PgConnection.executeTransactionCommand(PgConnection.java:928)
        at org.postgresql.jdbc.PgConnection.commit(PgConnection.java:950)
        at com.mchange.v2.c3p0.impl.NewProxyConnection.commit(NewProxyConnection.java:981)
        at clojure.java.jdbc$db_transaction_STAR_.invokeStatic(jdbc.clj:815)
        at clojure.java.jdbc$db_transaction_STAR_.invoke(jdbc.clj:776)
        at clojure.java.jdbc$db_transaction_STAR_.invokeStatic(jdbc.clj:852)
        at clojure.java.jdbc$db_transaction_STAR_.invoke(jdbc.clj:776)
        at clojure.java.jdbc$db_transaction_STAR_.invokeStatic(jdbc.clj:789)
        at clojure.java.jdbc$db_transaction_STAR_.invoke(jdbc.clj:776)
        at metabase.cmd.copy$fn__112893$copy_BANG___112898$fn__112899.invoke(copy.clj:408)
        at metabase.cmd.copy$fn__112893$copy_BANG___112898.invoke(copy.clj:385)
        at metabase.cmd.load_from_h2$load_from_h2_BANG_.invokeStatic(load_from_h2.clj:36)
        at metabase.cmd.load_from_h2$load_from_h2_BANG_.invoke(load_from_h2.clj:26)
        at clojure.lang.Var.invoke(Var.java:384)
        at metabase.cmd$load_from_h2.invokeStatic(cmd.clj:73)
        at metabase.cmd$load_from_h2.invoke(cmd.clj:67)
        at clojure.lang.AFn.applyToHelper(AFn.java:154)
        at clojure.lang.AFn.applyTo(AFn.java:144)
        at clojure.core$apply.invokeStatic(core.clj:667)
        at clojure.core$apply.invoke(core.clj:662)
        at metabase.cmd$run_cmd$fn__113981.invoke(cmd.clj:293)
        at metabase.cmd$run_cmd.invokeStatic(cmd.clj:292)
        at metabase.cmd$run_cmd.invoke(cmd.clj:282)
        at clojure.lang.Var.invoke(Var.java:388)
        at metabase.core$run_cmd.invokeStatic(core.clj:181)
        at metabase.core$run_cmd.invoke(core.clj:179)
        at metabase.core$_main.invokeStatic(core.clj:203)
        at metabase.core$_main.doInvoke(core.clj:198)
        at clojure.lang.RestFn.applyTo(RestFn.java:137)
        at clojure.lang.Var.applyTo(Var.java:705)
        at clojure.core$apply.invokeStatic(core.clj:667)
        at clojure.core$apply.invoke(core.clj:662)
        at metabase.bootstrap$_main.invokeStatic(bootstrap.clj:31)
        at metabase.bootstrap$_main.doInvoke(bootstrap.clj:28)
        at clojure.lang.RestFn.applyTo(RestFn.java:137)
        at metabase.bootstrap.main(Unknown Source)
Command failed with exception: ERROR: insert or update on table "report_dashboardcard" violates foreign key constraint "fk_report_dashboardcard_ref_dashboard_tab_id"
  Detail: Key (dashboard_tab_id)=(1) is not present in table "dashboard_tab".
1 Like

Does anyone have a solution for this. I am facing a similar error.

Hi there,

I'm facing the very same issue, I guess there are missing migrations for some tables...

Maybe this fix will help Add missing models to `copy` command by camsaul · Pull Request #34412 · metabase/metabase · GitHub but I was not able to test it yet. Waiting for the 0.47.4 version then ^^

Cheers,

Hi again,

I've tried the fix on the main branch and it worked, there is not this error anymore.