Metabase Upgrade from 0.48.3 to 0.54.11.2

Hi there,
I am looking to update my metabase from version 0.48.3 to 0.54.11.2. I have not updated metabase in the past. I am doing this in a blue-green manner, I have created new metabase ArgoApp, and am using following helmchart :

I have taken dump of old metabase DB and imported this into new DB, and then started the new metabase application, and the I started getting errors like :

2025-12-10 05:14:02,103 INFO plugins.dependencies :: Metabase cannot initialize plugin Metabase Vertica Driver due to required dependencies. Metabase requires the Vertica JDBC driver in order to connect to Vertica databases, but we can't ship it as part of Metabase due to licensing restrictions. See Redirecting… for more details.
2025-12-10 05:14:02,105 INFO plugins.dependencies :: Metabase Vertica Driver dependency {:class com.vertica.jdbc.Driver} satisfied? false
2025-12-10 05:14:02,106 INFO plugins.dependencies :: Plugins with unsatisfied deps: ["Metabase Vertica Driver"]
2025-12-10 05:14:02,119 DEBUG plugins.lazy-loaded-driver :: Registering lazy loading driver :presto-jdbc...
2025-12-10 05:14:02,120 INFO driver.impl :: Registered driver :presto-jdbc (parents: [:sql-jdbc]) :delivery_truck:
2025-12-10 05:14:02,132 DEBUG plugins.lazy-loaded-driver :: Registering lazy loading driver :bigquery-cloud-sdk...
2025-12-10 05:14:02,133 INFO driver.impl :: Registered driver :bigquery-cloud-sdk (parents: [:sql]) :delivery_truck:
2025-12-10 05:14:02,136 INFO plugins.dependencies :: Plugin 'Metabase Spark SQL Driver' depends on plugin 'Metabase Hive Like Abstract Driver'
2025-12-10 05:14:02,136 INFO plugins.dependencies :: Metabase Spark SQL Driver dependency {:plugin Metabase Hive Like Abstract Driver} satisfied? false
2025-12-10 05:14:02,136 INFO plugins.dependencies :: Plugins with unsatisfied deps: ["Metabase Spark SQL Driver" "Metabase Vertica Driver"]
2025-12-10 05:14:02,209 DEBUG plugins.lazy-loaded-driver :: Registering lazy loading driver :druid-jdbc...
2025-12-10 05:14:02,209 INFO driver.impl :: Registered driver :druid-jdbc (parents: [:sql-jdbc]) :delivery_truck:
2025-12-10 05:14:02,215 INFO plugins.dependencies :: Metabase cannot initialize plugin Metabase Oracle Driver due to required dependencies. Metabase requires the Oracle JDBC driver in order to connect to Oracle databases, but we can't ship it as part of Metabase due to licensing restrictions. See Redirecting… for more details.
2025-12-10 05:14:02,216 INFO plugins.dependencies :: Metabase Oracle Driver dependency {:class oracle.jdbc.OracleDriver} satisfied? false
2025-12-10 05:14:02,216 INFO plugins.dependencies :: Plugins with unsatisfied deps: ["Metabase Oracle Driver" "Metabase Spark SQL Driver" "Metabase Vertica Driver"]
2025-12-10 05:14:02,227 INFO plugins.dependencies :: Plugin 'Metabase Databricks Driver' depends on plugin 'Metabase Hive Like Abstract Driver'
2025-12-10 05:14:02,228 INFO plugins.dependencies :: Metabase Databricks Driver dependency {:plugin Metabase Hive Like Abstract Driver} satisfied? false
2025-12-10 05:14:02,229 INFO plugins.dependencies :: Plugins with unsatisfied deps: ["Metabase Databricks Driver" "Metabase Oracle Driver" "Metabase Spark SQL Driver" "Metabase Vertica Driver"]
2025-12-10 05:14:02,237 DEBUG plugins.lazy-loaded-driver :: Registering lazy loading driver :athena...
2025-12-10 05:14:02,237 INFO driver.impl :: Registered driver :athena (parents: [:sql-jdbc]) :delivery_truck:
2025-12-10 05:14:02,314 DEBUG plugins.lazy-loaded-driver :: Registering lazy loading driver :hive-like...
2025-12-10 05:14:02,315 INFO driver.impl :: Registered abstract driver :hive-like (parents: [:sql-jdbc]) :delivery_truck:
2025-12-10 05:14:02,315 INFO plugins.dependencies :: Metabase Databricks Driver dependency {:plugin Metabase Hive Like Abstract Driver} satisfied? true
2025-12-10 05:14:02,316 INFO plugins.dependencies :: Metabase Spark SQL Driver dependency {:plugin Metabase Hive Like Abstract Driver} satisfied? true
2025-12-10 05:14:02,317 DEBUG plugins.initialize :: Dependencies satisfied; these plugins will now be loaded: ["Metabase Spark SQL Driver" "Metabase Databricks Driver"]
2025-12-10 05:14:02,317 DEBUG plugins.lazy-loaded-driver :: Registering lazy loading driver :sparksql...
2025-12-10 05:14:02,317 INFO driver.impl :: Registered driver :sparksql (parents: [:hive-like]) :delivery_truck:
2025-12-10 05:14:02,318 DEBUG plugins.lazy-loaded-driver :: Registering lazy loading driver :databricks...
2025-12-10 05:14:02,318 INFO driver.impl :: Registered driver :databricks (parents: [:hive-like]) :delivery_truck:
2025-12-10 05:14:02,336 DEBUG plugins.lazy-loaded-driver :: Registering lazy loading driver :snowflake...
2025-12-10 05:14:02,336 INFO driver.impl :: Registered driver :snowflake (parents: [:sql-jdbc]) :delivery_truck:
2025-12-10 05:14:02,339 DEBUG plugins.lazy-loaded-driver :: Registering lazy loading driver :sqlserver...
2025-12-10 05:14:02,340 INFO driver.impl :: Registered driver :sqlserver (parents: [:sql-jdbc]) :delivery_truck:
2025-12-10 05:14:02,343 DEBUG plugins.lazy-loaded-driver :: Registering lazy loading driver :clickhouse...
2025-12-10 05:14:02,343 INFO driver.impl :: Registered driver :clickhouse (parents: [:sql-jdbc]) :delivery_truck:
2025-12-10 05:14:02,350 DEBUG plugins.lazy-loaded-driver :: Registering lazy loading driver :starburst...
2025-12-10 05:14:02,350 INFO driver.impl :: Registered driver :starburst (parents: [:sql-jdbc]) :delivery_truck:
2025-12-10 05:14:02,356 INFO core.core :: Setting up and migrating Metabase DB. Please sit tight, this may take a minute...
2025-12-10 05:14:02,357 INFO db.setup :: Verifying mysql Database Connection ...
2025-12-10 05:14:02,611 INFO db.setup :: Successfully verified MySQL 8.0.41 application database connection. :white_check_mark:
2025-12-10 05:14:02,612 INFO db.setup :: Checking if a database downgrade is required...
2025-12-10 05:14:03,913 INFO liquibase :: Parsed changelog file 'liquibase.yaml'
2025-12-10 05:14:04,121 INFO db.setup :: Running Database Migrations...
2025-12-10 05:14:04,121 INFO db.setup :: Setting up Liquibase...
2025-12-10 05:14:04,509 INFO liquibase :: Parsed changelog file 'liquibase.yaml'
2025-12-10 05:14:04,603 INFO db.setup :: Liquibase is ready.
2025-12-10 05:14:04,603 INFO db.liquibase :: Checking if Database has unrun migrations...
2025-12-10 05:14:04,846 INFO liquibase :: Parsed changelog file 'liquibase.yaml'
2025-12-10 05:14:04,959 INFO liquibase.changelog :: Reading from cf_qa_metabase_lts_temp.DATABASECHANGELOG
2025-12-10 05:14:05,843 WARN liquibase.changelog :: Due to mysql SQL limitations, setNullable will lose primary key/autoincrement/not null/comment settings explicitly redefined in the change. Use or to re-specify all configuration if this is the case
2025-12-10 05:14:05,843 WARN liquibase.changelog :: Due to mysql SQL limitations, addDefaultValue will lose primary key/autoincrement/not null/comment settings explicitly redefined in the change. Use or to re-specify all configuration if this is the case
2025-12-10 05:14:05,899 WARN liquibase.changelog :: Due to mysql SQL limitations, modifyDataType will lose primary key/autoincrement/not null/comment settings explicitly redefined in the change. Use or to re-specify all configuration if this is the case
2025-12-10 05:14:05,924 INFO db.liquibase :: Database has unrun migrations. Checking if migration lock is taken...
2025-12-10 05:14:12,930 WARN util.jvm :: auto-retry metabase.db.liquibase$wait_for_migration_lock$fn__48995@784c787f: Database has migration lock; cannot run migrations. You can force-release these locks by running java --add-opens java.base/java.nio=ALL-UNNAMED -jar metabase.jar migrate release-locks.
2025-12-10 05:14:19,939 WARN util.jvm :: auto-retry metabase.db.liquibase$wait_for_migration_lock$fn__48995@784c787f: Database has migration lock; cannot run migrations. You can force-release these locks by running java --add-opens java.base/java.nio=ALL-UNNAMED -jar metabase.jar migrate release-locks.
2025-12-10 05:14:26,969 WARN util.jvm :: auto-retry metabase.db.liquibase$wait_for_migration_lock$fn__48995@784c787f: Database has migration lock; cannot run migrations. You can force-release these locks by running java --add-opens java.base/java.nio=ALL-UNNAMED -jar metabase.jar migrate release-locks.
2025-12-10 05:14:33,971 WARN util.jvm :: auto-retry metabase.db.liquibase$wait_for_migration_lock$fn__48995@784c787f: Database has migration lock; cannot run migrations. You can force-release these locks by running java --add-opens java.base/java.nio=ALL-UNNAMED -jar metabase.jar migrate release-locks.
2025-12-10 05:14:40,973 WARN util.jvm :: auto-retry metabase.db.liquibase$wait_for_migration_lock$fn__48995@784c787f: Database has migration lock; cannot run migrations. You can force-release these locks by running java --add-opens java.base/java.nio=ALL-UNNAMED -jar metabase.jar migrate release-locks.
2025-12-10 05:14:47,977 ERROR core.core :: Metabase Initialization FAILED
liquibase.exception.LockException: Database has migration lock; cannot run migrations. You can force-release these locks by running java --add-opens java.base/java.nio=ALL-UNNAMED -jar metabase.jar migrate release-locks.
at metabase.db.liquibase$wait_for_migration_lock$fn__48995.invoke(liquibase.clj:241)
at metabase.util.jvm$do_with_auto_retries.invokeStatic(jvm.clj:161)
at metabase.util.jvm$do_with_auto_retries.invoke(jvm.clj:151)
at metabase.util.jvm$do_with_auto_retries.invokeStatic(jvm.clj:168)
at metabase.util.jvm$do_with_auto_retries.invoke(jvm.clj:151)
at metabase.util.jvm$do_with_auto_retries.invokeStatic(jvm.clj:168)
at metabase.util.jvm$do_with_auto_retries.invoke(jvm.clj:151)
at metabase.util.jvm$do_with_auto_retries.invokeStatic(jvm.clj:168)
at metabase.util.jvm$do_with_auto_retries.invoke(jvm.clj:151)
at metabase.util.jvm$do_with_auto_retries.invokeStatic(jvm.clj:168)
at metabase.util.jvm$do_with_auto_retries.invoke(jvm.clj:151)
at metabase.util.jvm$do_with_auto_retries.invokeStatic(jvm.clj:168)
at metabase.util.jvm$do_with_auto_retries.invoke(jvm.clj:151)
at metabase.db.liquibase$wait_for_migration_lock.invokeStatic(liquibase.clj:235)
at metabase.db.liquibase$wait_for_migration_lock.invoke(liquibase.clj:230)
at metabase.db.liquibase$run_in_scope_locked$reify__49030.run(liquibase.clj:341)
at liquibase.Scope.lambda$child$0(Scope.java:186)
at liquibase.Scope.child(Scope.java:195)
at liquibase.Scope.child(Scope.java:185)
at liquibase.Scope.child(Scope.java:164)
at metabase.db.liquibase$run_in_scope_locked.invokeStatic(liquibase.clj:337)
at metabase.db.liquibase$run_in_scope_locked.invoke(liquibase.clj:320)
at metabase.db.liquibase$migrate_up_if_needed_BANG_.invokeStatic(liquibase.clj:368)
at metabase.db.liquibase$migrate_up_if_needed_BANG_.invoke(liquibase.clj:361)
at metabase.db.setup$migrate_BANG_50515__50516$fn__50517.invoke(setup.clj:89)
at metabase.db.liquibase$do_with_liquibase48964__48965$f_STAR___48966.invoke(liquibase.clj:139)
at metabase.db.liquibase$do_with_liquibase48964__48965.invokeStatic(liquibase.clj:142)
at metabase.db.liquibase$do_with_liquibase48964__48965.invoke(liquibase.clj:130)
at metabase.db.setup$migrate_BANG_50515__50516.invokeStatic(setup.clj:78)
at metabase.db.setup$migrate_BANG_50515__50516.doInvoke(setup.clj:59)
at clojure.lang.RestFn.invoke(RestFn.java:428)
at metabase.db.setup$run_schema_migrations_BANG_50559__50560.invokeStatic(setup.clj:179)
at metabase.db.setup$run_schema_migrations_BANG_50559__50560.invoke(setup.clj:174)
at metabase.db.setup$setup_db_BANG_50566__50567$fn__50570$fn__50571.invoke(setup.clj:197)
at metabase.util.jvm$do_with_us_locale.invokeStatic(jvm.clj:239)
at metabase.util.jvm$do_with_us_locale.invoke(jvm.clj:225)
at metabase.db.setup$setup_db_BANG_50566__50567$fn__50570.invoke(setup.clj:191)
at metabase.db.setup$setup_db_BANG_50566__50567.invokeStatic(setup.clj:190)
at metabase.db.setup$setup_db_BANG_50566__50567.invoke(setup.clj:183)
at metabase.db$setup_db_BANG_$fn__50644.invoke(db.clj:96)
at metabase.db$setup_db_BANG_.invokeStatic(db.clj:91)
at metabase.db$setup_db_BANG_.doInvoke(db.clj:78)
at clojure.lang.RestFn.invoke(RestFn.java:424)
at metabase.core.core$init_BANG__STAR_.invokeStatic(core.clj:136)
at metabase.core.core$init_BANG__STAR_.invoke(core.clj:115)
at metabase.core.core$init_BANG_.invokeStatic(core.clj:191)
at metabase.core.core$init_BANG_.invoke(core.clj:186)
at metabase.core.core$start_normally.invokeStatic(core.clj:203)
at metabase.core.core$start_normally.invoke(core.clj:197)
at metabase.core.core$entrypoint.invokeStatic(core.clj:239)
at metabase.core.core$entrypoint.doInvoke(core.clj:230)
at clojure.lang.RestFn.invoke(RestFn.java:400)
at clojure.lang.AFn.applyToHelper(AFn.java:152)
at clojure.lang.RestFn.applyTo(RestFn.java:135)
at clojure.lang.Var.applyTo(Var.java:707)
at clojure.core$apply.invokeStatic(core.clj:667)
at clojure.core$apply.invoke(core.clj:662)
at metabase.core.bootstrap$_main.invokeStatic(bootstrap.clj:36)
at metabase.core.bootstrap$_main.doInvoke(bootstrap.clj:29)
at clojure.lang.RestFn.invoke(RestFn.java:400)
at clojure.lang.AFn.applyToHelper(AFn.java:152)
at clojure.lang.RestFn.applyTo(RestFn.java:135)
at metabase.core.bootstrap.main(Unknown Source)
2025-12-10 05:14:47,986 INFO core.core :: Metabase Shutting Down ...
2025-12-10 05:14:47,987 INFO server.instance :: Shutting Down Embedded Jetty Webserver
2025-12-10 05:14:47,993 WARN db.liquibase :: ()
2025-12-10 05:14:47,994 INFO core.core :: Metabase Shutdown COMPLETE

Need help on how to do this. Can anyone advise on how I should approach this? Will be very grateful! Thanks!!

The application is applying migrations. Do you have full visibility of what’s going on at the pgbouncer level?

Hi Luiggi,

The issue is that, I was not able to directly update from version 0.48.3 to 0.54.11.2, which the documentation says possible.
But on incremental updates, I was able to update.
I am mentioning the chart versions
[2.11.0 → 2.14.0 → 2.14.4 → 2.15.8 → 2.16.5 → 2.16.8 → 2.17.1 → 2.18.0 → 2.19.0 → 2.20.0]

Trying to understand on single go, why did the version update didn’t work.

sorry, you’re running MySQL as your app db and using pgbouncer?

The 0.49 Great Permission Rectification migration takes a LONG LONG LONG time to run if you have a well-used Metabase instance and/or a particularly slow database. It’s a common problem to forget to disable health checks on the pod and k8s bounces it, crashing the migration process and leaving problems like this behind.