Error upgrading - Table 'metabase_cluster_lock' already exists

I am trying to upgrade from 0.54.1 to 0.59.2 on a DEV server running Eclipse Adoptium 25.0.2.10 and MySQL 8.0.45. The database is a restored backup from a running instance for full disclosure.

Here is the complete log dump when i try and run it - I am assuming I have something wrong, I just can’t see it :frowning: :

2026-03-16 20:55:29,791 INFO metabase.util :: Maximum memory available to JVM: 1.3 GB
2026-03-16 20:55:31,323 INFO util.encryption :: Saved credentials encryption is DISABLED for this Metabase instance.
For more information, see Redirecting…
2026-03-16 20:55:37,684 INFO driver.impl :: Registered abstract driver :sql
2026-03-16 20:55:37,726 INFO driver.impl :: Registered abstract driver :sql-jdbc (parents: [:sql])
2026-03-16 20:55:37,736 INFO driver.impl :: Registered abstract driver :metabase.driver.sql.query-processor.like-escape-char-built-in/like-escape-char-built-in
2026-03-16 20:55:37,746 INFO driver.impl :: Registered driver :h2 (parents: [:sql-jdbc :metabase.driver.sql.query-processor.like-escape-char-built-in/like-escape-char-built-in])
2026-03-16 20:55:37,786 INFO driver.impl :: Registered driver :mysql (parents: [:sql-jdbc :metabase.driver.sql.query-processor.like-escape-char-built-in/like-escape-char-built-in])
2026-03-16 20:55:37,817 INFO driver.impl :: Registered driver :postgres (parents: [:sql-jdbc])
2026-03-16 20:55:38,269 INFO core.core ::
Metabase v0.59.2.6 (d2a5450)

Copyright © 2026 Metabase, Inc.

Metabase Enterprise Edition extensions are NOT PRESENT.
2026-03-16 20:55:38,274 INFO core.core :: Starting Metabase in STANDALONE mode
2026-03-16 20:55:38,377 INFO server.instance :: Launching Embedded Jetty Webserver with config:
{:port 8082, :send-server-version? false}

2026-03-16 20:55:38,433 INFO core.core :: Starting Metabase version v0.59.2.6 (d2a5450) ...
2026-03-16 20:55:38,436 INFO core.core :: System info:
{"file.encoding" "UTF-8",
"java.runtime.name" "OpenJDK Runtime Environment",
"java.runtime.version" "25.0.2+10-LTS",
"java.vendor" "Eclipse Adoptium",
"java.vendor.url" "https://adoptium.net/",
"java.version" "25.0.2",
"java.vm.name" "OpenJDK 64-Bit Server VM",
"java.vm.version" "25.0.2+10-LTS",
"os.name" "Windows Server 2025",
"os.version" "10.0",
"user.language" "en",
"user.timezone" "America/Los_Angeles"}

2026-03-16 20:55:38,440 INFO plugins.impl :: Loading plugins in plugins...
2026-03-16 20:55:38,718 DEBUG plugins.lazy-loaded-driver :: Registering lazy loading driver :athena...
2026-03-16 20:55:38,721 INFO driver.impl :: Registered driver :athena (parents: [:sql-jdbc])
2026-03-16 20:55:38,736 DEBUG plugins.lazy-loaded-driver :: Registering lazy loading driver :bigquery-cloud-sdk...
2026-03-16 20:55:38,737 INFO driver.impl :: Registered driver :bigquery-cloud-sdk (parents: [:sql])
2026-03-16 20:55:38,747 DEBUG plugins.lazy-loaded-driver :: Registering lazy loading driver :clickhouse...
2026-03-16 20:55:38,748 INFO driver.impl :: Registered driver :clickhouse (parents: [:sql-jdbc])
2026-03-16 20:55:38,758 INFO plugins.dependencies :: Plugin 'Metabase Databricks Driver' depends on plugin 'Metabase Hive Like Abstract Driver'
2026-03-16 20:55:38,761 INFO plugins.dependencies :: Metabase Databricks Driver dependency {:plugin Metabase Hive Like Abstract Driver} satisfied? false
2026-03-16 20:55:38,762 INFO plugins.dependencies :: Plugins with unsatisfied deps: ["Metabase Databricks Driver"]
2026-03-16 20:55:38,772 DEBUG plugins.lazy-loaded-driver :: Registering lazy loading driver :druid-jdbc...
2026-03-16 20:55:38,774 INFO driver.impl :: Registered driver :druid-jdbc (parents: [:sql-jdbc])
2026-03-16 20:55:38,785 DEBUG plugins.lazy-loaded-driver :: Registering lazy loading driver :druid...
2026-03-16 20:55:38,791 INFO driver.impl :: Registered driver :druid
2026-03-16 20:55:38,807 DEBUG plugins.lazy-loaded-driver :: Registering lazy loading driver :hive-like...
2026-03-16 20:55:38,808 INFO driver.impl :: Registered abstract driver :hive-like (parents: [:sql-jdbc])
2026-03-16 20:55:38,810 INFO plugins.dependencies :: Metabase Databricks Driver dependency {:plugin Metabase Hive Like Abstract Driver} satisfied? true
2026-03-16 20:55:38,812 DEBUG plugins.initialize :: Dependencies satisfied; these plugins will now be loaded: ["Metabase Databricks Driver"]
2026-03-16 20:55:38,813 DEBUG plugins.lazy-loaded-driver :: Registering lazy loading driver :databricks...
2026-03-16 20:55:38,814 INFO driver.impl :: Registered driver :databricks (parents: [:hive-like])
2026-03-16 20:55:38,821 DEBUG plugins.lazy-loaded-driver :: Registering lazy loading driver :mongo...
2026-03-16 20:55:38,821 INFO driver.impl :: Registered driver :mongo
2026-03-16 20:55:38,830 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.

2026-03-16 20:55:38,831 INFO plugins.dependencies :: Metabase Oracle Driver dependency {:class oracle.jdbc.OracleDriver} satisfied? false
2026-03-16 20:55:38,832 INFO plugins.dependencies :: Plugins with unsatisfied deps: ["Metabase Oracle Driver"]
2026-03-16 20:55:38,841 DEBUG plugins.lazy-loaded-driver :: Registering lazy loading driver :presto-jdbc...
2026-03-16 20:55:38,841 INFO driver.impl :: Registered driver :presto-jdbc (parents: [:sql-jdbc])
2026-03-16 20:55:38,847 DEBUG plugins.lazy-loaded-driver :: Registering lazy loading driver :redshift...
2026-03-16 20:55:38,848 INFO driver.impl :: Registered driver :redshift (parents: [:postgres])
2026-03-16 20:55:38,864 DEBUG plugins.lazy-loaded-driver :: Registering lazy loading driver :snowflake...
2026-03-16 20:55:38,865 INFO driver.impl :: Registered driver :snowflake (parents: [:sql-jdbc])
2026-03-16 20:55:38,871 INFO plugins.dependencies :: Plugin 'Metabase Spark SQL Driver' depends on plugin 'Metabase Hive Like Abstract Driver'
2026-03-16 20:55:38,872 INFO plugins.dependencies :: Metabase Spark SQL Driver dependency {:plugin Metabase Hive Like Abstract Driver} satisfied? true
2026-03-16 20:55:38,873 DEBUG plugins.lazy-loaded-driver :: Registering lazy loading driver :sparksql...
2026-03-16 20:55:38,874 INFO driver.impl :: Registered driver :sparksql (parents: [:hive-like])
2026-03-16 20:55:38,881 DEBUG plugins.lazy-loaded-driver :: Registering lazy loading driver :sqlite...
2026-03-16 20:55:38,883 INFO driver.impl :: Registered driver :sqlite (parents: [:sql-jdbc])
2026-03-16 20:55:38,887 DEBUG plugins.lazy-loaded-driver :: Registering lazy loading driver :sqlserver...
2026-03-16 20:55:38,888 INFO driver.impl :: Registered driver :sqlserver (parents: [:sql-jdbc])
2026-03-16 20:55:38,897 DEBUG plugins.lazy-loaded-driver :: Registering lazy loading driver :starburst...
2026-03-16 20:55:38,899 INFO driver.impl :: Registered driver :starburst (parents: [:sql-jdbc])
2026-03-16 20:55:38,907 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.

2026-03-16 20:55:38,920 INFO plugins.dependencies :: Metabase Vertica Driver dependency {:class com.vertica.jdbc.Driver} satisfied? false
2026-03-16 20:55:38,921 INFO plugins.dependencies :: Plugins with unsatisfied deps: ["Metabase Oracle Driver" "Metabase Vertica Driver"]
2026-03-16 20:55:38,928 INFO core.core :: Setting up and migrating Metabase DB. Please sit tight, this may take a minute...
2026-03-16 20:55:38,931 INFO app-db.setup :: Verifying mysql Database Connection ...
2026-03-16 20:55:39,051 INFO app-db.setup :: Successfully verified MySQL 8.0.45 application database connection.
2026-03-16 20:55:39,052 INFO app-db.setup :: Checking if a database downgrade is required...
2026-03-16 20:55:39,207 INFO liquibase.changelog :: Reading resource: migrations/001_update_migrations.yaml
2026-03-16 20:55:39,542 INFO liquibase.changelog :: Reading resource: migrations/056_update_migrations.yaml
2026-03-16 20:55:39,557 INFO liquibase.changelog :: Reading resource: migrations/057_update_migrations.yaml
2026-03-16 20:55:39,593 INFO liquibase.changelog :: Reading resource: migrations/058_update_migrations.yaml
2026-03-16 20:55:39,607 INFO liquibase.changelog :: Reading resource: migrations/059_update_migrations.yaml
2026-03-16 20:55:39,657 INFO liquibase :: Parsed changelog file 'liquibase.yaml'
2026-03-16 20:55:39,754 INFO app-db.setup :: Running Database Migrations...
2026-03-16 20:55:39,756 INFO app-db.setup :: Setting up Liquibase...
2026-03-16 20:55:39,763 INFO liquibase.changelog :: Reading resource: migrations/001_update_migrations.yaml
2026-03-16 20:55:39,852 INFO liquibase.changelog :: Reading resource: migrations/056_update_migrations.yaml
2026-03-16 20:55:39,861 INFO liquibase.changelog :: Reading resource: migrations/057_update_migrations.yaml
2026-03-16 20:55:39,879 INFO liquibase.changelog :: Reading resource: migrations/058_update_migrations.yaml
2026-03-16 20:55:39,888 INFO liquibase.changelog :: Reading resource: migrations/059_update_migrations.yaml
2026-03-16 20:55:39,918 INFO liquibase :: Parsed changelog file 'liquibase.yaml'
2026-03-16 20:55:39,945 INFO app-db.liquibase :: Updating liquibase table to reflect consolidated changeset filenames
2026-03-16 20:55:39,948 INFO liquibase.logging :: Successfully acquired change log lock
2026-03-16 20:55:39,949 INFO app-db.liquibase :: No migration lock found.
2026-03-16 20:55:39,950 INFO app-db.liquibase :: Migration lock acquired.
2026-03-16 20:55:39,968 INFO liquibase.logging :: Successfully released change log lock
2026-03-16 20:55:39,969 INFO app-db.setup :: Liquibase is ready.
2026-03-16 20:55:39,970 INFO app-db.liquibase :: Checking if Database has unrun migrations...
2026-03-16 20:55:39,981 INFO liquibase.changelog :: Reading resource: migrations/001_update_migrations.yaml
2026-03-16 20:55:40,087 INFO liquibase.changelog :: Reading resource: migrations/056_update_migrations.yaml
2026-03-16 20:55:40,096 INFO liquibase.changelog :: Reading resource: migrations/057_update_migrations.yaml
2026-03-16 20:55:40,116 INFO liquibase.changelog :: Reading resource: migrations/058_update_migrations.yaml
2026-03-16 20:55:40,125 INFO liquibase.changelog :: Reading resource: migrations/059_update_migrations.yaml
2026-03-16 20:55:40,174 INFO liquibase :: Parsed changelog file 'liquibase.yaml'
2026-03-16 20:55:40,206 INFO liquibase.changelog :: Reading from metabasedev.databasechangelog
2026-03-16 20:55:40,475 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
2026-03-16 20:55:40,476 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
2026-03-16 20:55:40,502 INFO app-db.liquibase :: Database has unrun migrations. Checking if migration lock is taken...
2026-03-16 20:55:40,504 INFO liquibase.logging :: Successfully acquired change log lock
2026-03-16 20:55:40,505 INFO app-db.liquibase :: No migration lock found.
2026-03-16 20:55:40,505 INFO app-db.liquibase :: Migration lock acquired.
2026-03-16 20:55:40,512 INFO liquibase.changelog :: Reading resource: migrations/001_update_migrations.yaml
2026-03-16 20:55:40,603 INFO liquibase.changelog :: Reading from metabasedev.databasechangelog
2026-03-16 20:55:40,618 INFO liquibase.changelog :: Reading resource: migrations/056_update_migrations.yaml
2026-03-16 20:55:40,624 INFO liquibase.changelog :: Reading resource: migrations/057_update_migrations.yaml
2026-03-16 20:55:40,643 INFO liquibase.changelog :: Reading resource: migrations/058_update_migrations.yaml
2026-03-16 20:55:40,652 INFO liquibase.changelog :: Reading resource: migrations/059_update_migrations.yaml
2026-03-16 20:55:40,683 INFO liquibase :: Parsed changelog file 'liquibase.yaml'
2026-03-16 20:55:40,699 INFO liquibase.changelog :: Reading from metabasedev.databasechangelog
2026-03-16 20:55:40,803 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
2026-03-16 20:55:40,804 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
2026-03-16 20:55:40,824 INFO app-db.liquibase :: Running 390 migrations ...
2026-03-16 20:55:41,041 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
2026-03-16 20:55:41,042 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
2026-03-16 20:55:41,056 INFO liquibase.command :: Using deploymentId: 3719731600
2026-03-16 20:55:41,062 INFO liquibase.changelog :: Reading from metabasedev.databasechangelog
2026-03-16 20:55:41,210 ERROR liquibase.changelog :: ChangeSet migrations/001_update_migrations.yaml::v53.2025-04-02T15:25:04::edpaget encountered an exception.
liquibase.exception.DatabaseException: (conn=168) Table 'metabase_cluster_lock' already exists [Failed SQL: (1050) CREATE TABLE metabasedev.metabase_cluster_lock (lock_name VARCHAR(254) NOT NULL COMMENT 'a single column that can be used to a lock across a cluster', CONSTRAINT PK_METABASE_CLUSTER_LOCK PRIMARY KEY (lock_name)) COMMENT='A table to allow metabase instances to take locks across a cluster' ENGINE InnoDB CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;]
at liquibase.executor.jvm.JdbcExecutor$ExecuteStatementCallback.doInStatement(JdbcExecutor.java:520)
at liquibase.executor.jvm.JdbcExecutor.execute(JdbcExecutor.java:85)
at liquibase.executor.jvm.JdbcExecutor.execute(JdbcExecutor.java:188)
at liquibase.executor.AbstractExecutor.execute(AbstractExecutor.java:148)
at liquibase.database.AbstractJdbcDatabase.executeStatements(AbstractJdbcDatabase.java:1198)
at liquibase.changelog.ChangeSet.execute(ChangeSet.java:816)
at liquibase.changelog.visitor.UpdateVisitor.executeAcceptedChange(UpdateVisitor.java:127)
at liquibase.changelog.visitor.UpdateVisitor.visit(UpdateVisitor.java:71)
at liquibase.changelog.ChangeLogIterator.lambda$run$0(ChangeLogIterator.java:133)
at liquibase.Scope.lambda$child$0(Scope.java:216)
at liquibase.Scope.child(Scope.java:225)
at liquibase.Scope.child(Scope.java:215)
at liquibase.Scope.child(Scope.java:194)
at liquibase.changelog.ChangeLogIterator.lambda$run$1(ChangeLogIterator.java:122)
at liquibase.Scope.lambda$child$0(Scope.java:216)
at liquibase.Scope.child(Scope.java:225)
at liquibase.Scope.child(Scope.java:215)
at liquibase.Scope.child(Scope.java:194)
at liquibase.Scope.child(Scope.java:282)
at liquibase.Scope.child(Scope.java:286)
at liquibase.changelog.ChangeLogIterator.run(ChangeLogIterator.java:91)
at liquibase.command.core.AbstractUpdateCommandStep.lambda$run$0(AbstractUpdateCommandStep.java:114)
at liquibase.Scope.lambda$child$0(Scope.java:216)
at liquibase.Scope.child(Scope.java:225)
at liquibase.Scope.child(Scope.java:215)
at liquibase.Scope.child(Scope.java:194)
at liquibase.command.core.AbstractUpdateCommandStep.run(AbstractUpdateCommandStep.java:112)
at liquibase.command.core.UpdateCommandStep.run(UpdateCommandStep.java:100)
at liquibase.command.CommandScope.lambda$execute$6(CommandScope.java:263)
at liquibase.Scope.child(Scope.java:225)
at liquibase.Scope.child(Scope.java:201)
at liquibase.command.CommandScope.execute(CommandScope.java:251)
at liquibase.Liquibase.lambda$update$0(Liquibase.java:216)
at liquibase.Scope.lambda$child$0(Scope.java:216)
at liquibase.Scope.child(Scope.java:225)
at liquibase.Scope.child(Scope.java:215)
at liquibase.Scope.child(Scope.java:194)
at liquibase.Liquibase.runInScope(Liquibase.java:1366)
at liquibase.Liquibase.update(Liquibase.java:205)
at liquibase.Liquibase.update(Liquibase.java:188)
at liquibase.Liquibase.update(Liquibase.java:175)
at metabase.app_db.liquibase$migrate_up_if_needed_BANG_$fn__50156.invoke(liquibase.clj:380)
at metabase.app_db.liquibase$run_in_scope_locked$reify__50140.run(liquibase.clj:345)
at liquibase.Scope.lambda$child$0(Scope.java:216)
at liquibase.Scope.child(Scope.java:225)
at liquibase.Scope.child(Scope.java:215)
at liquibase.Scope.child(Scope.java:194)
at metabase.app_db.liquibase$run_in_scope_locked.invokeStatic(liquibase.clj:338)
at metabase.app_db.liquibase$run_in_scope_locked.invoke(liquibase.clj:321)
at metabase.app_db.liquibase$migrate_up_if_needed_BANG_.invokeStatic(liquibase.clj:369)
at metabase.app_db.liquibase$migrate_up_if_needed_BANG_.invoke(liquibase.clj:362)
at metabase.app_db.setup$migrate_BANG_$fn__50370.invoke(setup.clj:89)
at metabase.app_db.liquibase$do_with_liquibase$f_STAR___50030.invoke(liquibase.clj:140)
at metabase.app_db.liquibase$do_with_liquibase.invokeStatic(liquibase.clj:143)
at metabase.app_db.liquibase$do_with_liquibase.invoke(liquibase.clj:130)
at metabase.app_db.setup$migrate_BANG_.invokeStatic(setup.clj:78)
at metabase.app_db.setup$migrate_BANG_.doInvoke(setup.clj:59)
at clojure.lang.RestFn.invoke(RestFn.java:428)
at metabase.app_db.setup$run_schema_migrations_BANG_.invokeStatic(setup.clj:193)
at metabase.app_db.setup$run_schema_migrations_BANG_.invoke(setup.clj:188)
at metabase.app_db.setup$setup_db_BANG_$fn__50530$fn__50531.invoke(setup.clj:211)
at metabase.util.jvm$do_with_us_locale.invokeStatic(jvm.clj:251)
at metabase.util.jvm$do_with_us_locale.invoke(jvm.clj:237)
at metabase.app_db.setup$setup_db_BANG_$fn__50530.invoke(setup.clj:205)
at metabase.app_db.setup$setup_db_BANG_.invokeStatic(setup.clj:204)
at metabase.app_db.setup$setup_db_BANG_.invoke(setup.clj:197)
at metabase.app_db.core$setup_db_BANG_$fn__50751.invoke(core.clj:123)
at metabase.app_db.core$setup_db_BANG_.invokeStatic(core.clj:118)
at metabase.app_db.core$setup_db_BANG_.doInvoke(core.clj:105)
at clojure.lang.RestFn.invoke(RestFn.java:424)
at metabase.core.core$init_BANG__STAR_.invokeStatic(core.clj:180)
at metabase.core.core$init_BANG__STAR_.invoke(core.clj:157)
at metabase.core.core$init_BANG_.invokeStatic(core.clj:236)
at metabase.core.core$init_BANG_.invoke(core.clj:230)
at metabase.core.core$start_normally.invokeStatic(core.clj:256)
at metabase.core.core$start_normally.invoke(core.clj:248)
at metabase.core.core$entrypoint.invokeStatic(core.clj:291)
at metabase.core.core$entrypoint.doInvoke(core.clj:282)
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)
Caused by: java.sql.SQLSyntaxErrorException: (conn=168) Table 'metabase_cluster_lock' already exists
at org.mariadb.jdbc.internal.util.exceptions.ExceptionFactory.createException(ExceptionFactory.java:62)
at org.mariadb.jdbc.internal.util.exceptions.ExceptionFactory.create(ExceptionFactory.java:158)
at org.mariadb.jdbc.MariaDbStatement.executeExceptionEpilogue(MariaDbStatement.java:262)
at org.mariadb.jdbc.MariaDbStatement.executeInternal(MariaDbStatement.java:362)
at org.mariadb.jdbc.MariaDbStatement.execute(MariaDbStatement.java:500)
at com.mchange.v2.c3p0.impl.NewProxyStatement.execute(NewProxyStatement.java:75)
at liquibase.executor.jvm.JdbcExecutor$ExecuteStatementCallback.doInStatement(JdbcExecutor.java:512)
... 89 more
Caused by: org.mariadb.jdbc.internal.util.exceptions.MariaDbSqlException: Table 'metabase_cluster_lock' already exists
at org.mariadb.jdbc.internal.util.exceptions.MariaDbSqlException.of(MariaDbSqlException.java:34)
at org.mariadb.jdbc.internal.protocol.AbstractQueryProtocol.exceptionWithQuery(AbstractQueryProtocol.java:195)
at org.mariadb.jdbc.internal.protocol.AbstractQueryProtocol.executeQuery(AbstractQueryProtocol.java:263)
at org.mariadb.jdbc.MariaDbStatement.executeInternal(MariaDbStatement.java:356)
... 92 more
Caused by: java.sql.SQLException: Table 'metabase_cluster_lock' already exists
at org.mariadb.jdbc.internal.protocol.AbstractQueryProtocol.readErrorPacket(AbstractQueryProtocol.java:1693)
at org.mariadb.jdbc.internal.protocol.AbstractQueryProtocol.readPacket(AbstractQueryProtocol.java:1555)
at org.mariadb.jdbc.internal.protocol.AbstractQueryProtocol.getResult(AbstractQueryProtocol.java:1518)
at org.mariadb.jdbc.internal.protocol.AbstractQueryProtocol.executeQuery(AbstractQueryProtocol.java:257)
... 93 more
2026-03-16 20:55:41,234 INFO liquibase.util :: UPDATE SUMMARY
2026-03-16 20:55:41,235 INFO liquibase.util :: Run: 0
2026-03-16 20:55:41,236 INFO liquibase.util :: Previously run: 517
2026-03-16 20:55:41,236 INFO liquibase.util :: Filtered out: 10
2026-03-16 20:55:41,236 INFO liquibase.util :: -------------------------------
2026-03-16 20:55:41,237 INFO liquibase.util :: Total change sets: 917
2026-03-16 20:55:41,237 INFO liquibase.util :: FILTERED CHANGE SETS SUMMARY
2026-03-16 20:55:41,237 INFO liquibase.util :: DBMS mismatch: 10
2026-03-16 20:55:41,242 INFO liquibase.util :: Update summary generated
2026-03-16 20:55:41,248 INFO liquibase.command :: Update command encountered an exception.
2026-03-16 20:55:41,250 INFO liquibase.logging :: Successfully released change log lock
2026-03-16 20:55:41,253 INFO liquibase.command :: Logging exception.
2026-03-16 20:55:41,254 INFO liquibase.command :: Command execution complete
2026-03-16 20:55:42,297 ERROR core.core :: Metabase Initialization FAILED
liquibase.exception.CommandExecutionException: liquibase.exception.LiquibaseException: liquibase.exception.MigrationFailedException: Migration failed for changeset migrations/001_update_migrations.yaml::v53.2025-04-02T15:25:04::edpaget:
Reason: liquibase.exception.DatabaseException: (conn=168) Table 'metabase_cluster_lock' already exists [Failed SQL: (1050) CREATE TABLE metabasedev.metabase_cluster_lock (lock_name VARCHAR(254) NOT NULL COMMENT 'a single column that can be used to a lock across a cluster', CONSTRAINT PK_METABASE_CLUSTER_LOCK PRIMARY KEY (lock_name)) COMMENT='A table to allow metabase instances to take locks across a cluster' ENGINE InnoDB CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;]
at liquibase.command.CommandScope.lambda$execute$6(CommandScope.java:310)
at liquibase.Scope.child(Scope.java:225)
at liquibase.Scope.child(Scope.java:201)
at liquibase.command.CommandScope.execute(CommandScope.java:251)
at liquibase.Liquibase.lambda$update$0(Liquibase.java:216)
at liquibase.Scope.lambda$child$0(Scope.java:216)
at liquibase.Scope.child(Scope.java:225)
at liquibase.Scope.child(Scope.java:215)
at liquibase.Scope.child(Scope.java:194)
at liquibase.Liquibase.runInScope(Liquibase.java:1366)
at liquibase.Liquibase.update(Liquibase.java:205)
at liquibase.Liquibase.update(Liquibase.java:188)
at liquibase.Liquibase.update(Liquibase.java:175)
at metabase.app_db.liquibase$migrate_up_if_needed_BANG
$fn__50156.invoke(liquibase.clj:380)
at metabase.app_db.liquibase$run_in_scope_locked$reify__50140.run(liquibase.clj:345)
at liquibase.Scope.lambda$child$0(Scope.java:216)
at liquibase.Scope.child(Scope.java:225)
at liquibase.Scope.child(Scope.java:215)
at liquibase.Scope.child(Scope.java:194)
at metabase.app_db.liquibase$run_in_scope_locked.invokeStatic(liquibase.clj:338)
at metabase.app_db.liquibase$run_in_scope_locked.invoke(liquibase.clj:321)
at metabase.app_db.liquibase$migrate_up_if_needed_BANG.invokeStatic(liquibase.clj:369)
at metabase.app_db.liquibase$migrate_up_if_needed_BANG_.invoke(liquibase.clj:362)
at metabase.app_db.setup$migrate_BANG_$fn__50370.invoke(setup.clj:89)
at metabase.app_db.liquibase$do_with_liquibase$f_STAR___50030.invoke(liquibase.clj:140)
at metabase.app_db.liquibase$do_with_liquibase.invokeStatic(liquibase.clj:143)
at metabase.app_db.liquibase$do_with_liquibase.invoke(liquibase.clj:130)
at metabase.app_db.setup$migrate_BANG_.invokeStatic(setup.clj:78)
at metabase.app_db.setup$migrate_BANG_.doInvoke(setup.clj:59)
at clojure.lang.RestFn.invoke(RestFn.java:428)
at metabase.app_db.setup$run_schema_migrations_BANG_.invokeStatic(setup.clj:193)
at metabase.app_db.setup$run_schema_migrations_BANG_.invoke(setup.clj:188)
at metabase.app_db.setup$setup_db_BANG_$fn__50530$fn__50531.invoke(setup.clj:211)
at metabase.util.jvm$do_with_us_locale.invokeStatic(jvm.clj:251)
at metabase.util.jvm$do_with_us_locale.invoke(jvm.clj:237)
at metabase.app_db.setup$setup_db_BANG_$fn__50530.invoke(setup.clj:205)
at metabase.app_db.setup$setup_db_BANG_.invokeStatic(setup.clj:204)
at metabase.app_db.setup$setup_db_BANG_.invoke(setup.clj:197)
at metabase.app_db.core$setup_db_BANG_$fn__50751.invoke(core.clj:123)
at metabase.app_db.core$setup_db_BANG_.invokeStatic(core.clj:118)
at metabase.app_db.core$setup_db_BANG_.doInvoke(core.clj:105)
at clojure.lang.RestFn.invoke(RestFn.java:424)
at metabase.core.core$init_BANG__STAR_.invokeStatic(core.clj:180)
at metabase.core.core$init_BANG__STAR_.invoke(core.clj:157)
at metabase.core.core$init_BANG_.invokeStatic(core.clj:236)
at metabase.core.core$init_BANG_.invoke(core.clj:230)
at metabase.core.core$start_normally.invokeStatic(core.clj:256)
at metabase.core.core$start_normally.invoke(core.clj:248)
at metabase.core.core$entrypoint.invokeStatic(core.clj:291)
at metabase.core.core$entrypoint.doInvoke(core.clj:282)
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)
Caused by: liquibase.exception.LiquibaseException: liquibase.exception.MigrationFailedException: Migration failed for changeset migrations/001_update_migrations.yaml::v53.2025-04-02T15:25:04::edpaget:
Reason: liquibase.exception.DatabaseException: (conn=168) Table 'metabase_cluster_lock' already exists [Failed SQL: (1050) CREATE TABLE metabasedev.metabase_cluster_lock (lock_name VARCHAR(254) NOT NULL COMMENT 'a single column that can be used to a lock across a cluster', CONSTRAINT PK_METABASE_CLUSTER_LOCK PRIMARY KEY (lock_name)) COMMENT='A table to allow metabase instances to take locks across a cluster' ENGINE InnoDB CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;]
at liquibase.changelog.ChangeLogIterator.run(ChangeLogIterator.java:155)
at liquibase.command.core.AbstractUpdateCommandStep.lambda$run$0(AbstractUpdateCommandStep.java:114)
at liquibase.Scope.lambda$child$0(Scope.java:216)
at liquibase.Scope.child(Scope.java:225)
at liquibase.Scope.child(Scope.java:215)
at liquibase.Scope.child(Scope.java:194)
at liquibase.command.core.AbstractUpdateCommandStep.run(AbstractUpdateCommandStep.java:112)
at liquibase.command.core.UpdateCommandStep.run(UpdateCommandStep.java:100)
at liquibase.command.CommandScope.lambda$execute$6(CommandScope.java:263)
... 61 more
Caused by: liquibase.exception.MigrationFailedException: Migration failed for changeset migrations/001_update_migrations.yaml::v53.2025-04-02T15:25:04::edpaget:
Reason: liquibase.exception.DatabaseException: (conn=168) Table 'metabase_cluster_lock' already exists [Failed SQL: (1050) CREATE TABLE metabasedev.metabase_cluster_lock (lock_name VARCHAR(254) NOT NULL COMMENT 'a single column that can be used to a lock across a cluster', CONSTRAINT PK_METABASE_CLUSTER_LOCK PRIMARY KEY (lock_name)) COMMENT='A table to allow metabase instances to take locks across a cluster' ENGINE InnoDB CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;]
at liquibase.changelog.ChangeSet.execute(ChangeSet.java:873)
at liquibase.changelog.visitor.UpdateVisitor.executeAcceptedChange(UpdateVisitor.java:127)
at liquibase.changelog.visitor.UpdateVisitor.visit(UpdateVisitor.java:71)
at liquibase.changelog.ChangeLogIterator.lambda$run$0(ChangeLogIterator.java:133)
at liquibase.Scope.lambda$child$0(Scope.java:216)
at liquibase.Scope.child(Scope.java:225)
at liquibase.Scope.child(Scope.java:215)
at liquibase.Scope.child(Scope.java:194)
at liquibase.changelog.ChangeLogIterator.lambda$run$1(ChangeLogIterator.java:122)
at liquibase.Scope.lambda$child$0(Scope.java:216)
at liquibase.Scope.child(Scope.java:225)
at liquibase.Scope.child(Scope.java:215)
at liquibase.Scope.child(Scope.java:194)
at liquibase.Scope.child(Scope.java:282)
at liquibase.Scope.child(Scope.java:286)
at liquibase.changelog.ChangeLogIterator.run(ChangeLogIterator.java:91)
... 69 more
Caused by: liquibase.exception.DatabaseException: (conn=168) Table 'metabase_cluster_lock' already exists [Failed SQL: (1050) CREATE TABLE metabasedev.metabase_cluster_lock (lock_name VARCHAR(254) NOT NULL COMMENT 'a single column that can be used to a lock across a cluster', CONSTRAINT PK_METABASE_CLUSTER_LOCK PRIMARY KEY (lock_name)) COMMENT='A table to allow metabase instances to take locks across a cluster' ENGINE InnoDB CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;]
at liquibase.executor.jvm.JdbcExecutor$ExecuteStatementCallback.doInStatement(JdbcExecutor.java:520)
at liquibase.executor.jvm.JdbcExecutor.execute(JdbcExecutor.java:85)
at liquibase.executor.jvm.JdbcExecutor.execute(JdbcExecutor.java:188)
at liquibase.executor.AbstractExecutor.execute(AbstractExecutor.java:148)
at liquibase.database.AbstractJdbcDatabase.executeStatements(AbstractJdbcDatabase.java:1198)
at liquibase.changelog.ChangeSet.execute(ChangeSet.java:816)
... 84 more
Caused by: java.sql.SQLSyntaxErrorException: (conn=168) Table 'metabase_cluster_lock' already exists
at org.mariadb.jdbc.internal.util.exceptions.ExceptionFactory.createException(ExceptionFactory.java:62)
at org.mariadb.jdbc.internal.util.exceptions.ExceptionFactory.create(ExceptionFactory.java:158)
at org.mariadb.jdbc.MariaDbStatement.executeExceptionEpilogue(MariaDbStatement.java:262)
at org.mariadb.jdbc.MariaDbStatement.executeInternal(MariaDbStatement.java:362)
at org.mariadb.jdbc.MariaDbStatement.execute(MariaDbStatement.java:500)
at com.mchange.v2.c3p0.impl.NewProxyStatement.execute(NewProxyStatement.java:75)
at liquibase.executor.jvm.JdbcExecutor$ExecuteStatementCallback.doInStatement(JdbcExecutor.java:512)
... 89 more
Caused by: org.mariadb.jdbc.internal.util.exceptions.MariaDbSqlException: Table 'metabase_cluster_lock' already exists
at org.mariadb.jdbc.internal.util.exceptions.MariaDbSqlException.of(MariaDbSqlException.java:34)
at org.mariadb.jdbc.internal.protocol.AbstractQueryProtocol.exceptionWithQuery(AbstractQueryProtocol.java:195)
at org.mariadb.jdbc.internal.protocol.AbstractQueryProtocol.executeQuery(AbstractQueryProtocol.java:263)
at org.mariadb.jdbc.MariaDbStatement.executeInternal(MariaDbStatement.java:356)
... 92 more
Caused by: java.sql.SQLException: Table 'metabase_cluster_lock' already exists
at org.mariadb.jdbc.internal.protocol.AbstractQueryProtocol.readErrorPacket(AbstractQueryProtocol.java:1693)
at org.mariadb.jdbc.internal.protocol.AbstractQueryProtocol.readPacket(AbstractQueryProtocol.java:1555)
at org.mariadb.jdbc.internal.protocol.AbstractQueryProtocol.getResult(AbstractQueryProtocol.java:1518)
at org.mariadb.jdbc.internal.protocol.AbstractQueryProtocol.executeQuery(AbstractQueryProtocol.java:257)
... 93 more
2026-03-16 20:55:42,301 INFO core.core :: Metabase Shutting Down ...
2026-03-16 20:55:42,302 INFO server.instance :: Shutting Down Embedded Jetty Webserver
2026-03-16 20:55:42,309 INFO notification.send :: Shutting down notification dispatchers... {mb-dispatcher-count=2}
2026-03-16 20:55:42,313 INFO notification.send :: Starting notification thread pool with 3 threads {mb-dispatcher-count=2}
2026-03-16 20:55:42,314 INFO notification.send :: Gracefully shutting down notification dispatcher with 0 pending notifications to process {mb-dispatcher-count=2}
2026-03-16 20:55:43,315 INFO notification.send :: Notification worker shut down successfully {mb-dispatcher-count=2}
2026-03-16 20:55:43,316 INFO notification.send :: Starting notification thread pool with 5 threads {mb-dispatcher-count=2}
2026-03-16 20:55:43,317 INFO notification.send :: Gracefully shutting down notification dispatcher with 0 pending notifications to process {mb-dispatcher-count=2}
2026-03-16 20:55:44,318 INFO notification.send :: Notification worker shut down successfully {mb-dispatcher-count=2}
2026-03-16 20:55:44,319 INFO notification.send :: All notification workers shut down successfully {mb-dispatcher-count=2}
2026-03-16 20:55:44,321 WARN app-db.liquibase :: ()
2026-03-16 20:55:44,322 INFO core.core :: Metabase Shutdown COMPLETE

The startup crashed during migration due to an obstructing table. The error text:

liquibase.exception.DatabaseException: (conn=168) Table 'metabase_cluster_lock' already exists [Failed SQL: (1050) CREATE TABLE metabasedev.metabase_cluster_lock (lock_name VARCHAR(254) NOT NULL COMMENT 'a single column that can be used to a lock across a cluster', CONSTRAINT PK_METABASE_CLUSTER_LOCK PRIMARY KEY (lock_name)) COMMENT='A table to allow metabase instances to take locks across a cluster' ENGINE InnoDB CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;]

My recommendations:

  1. Use Java 21, Java 25 is not supported by Metabase.
  2. If at all possible get a cold backup of the app database.
  3. Be sure to restore the backup to an empty database/schema. Drop & recreate the database first if possible.
  4. Start the dev instance with the same version as production first, to verify the restored backup is viable.
  5. Next, upgrade the dev instance to the most recent v54. Early versions can sometimes have odd migration issues that are resolved in later versions.
  6. Work your way up through major versions, using the latest for each, to v59. This will also reduce the database migration time as the entire migration isn’t running in one transaction.

If we want to debug the migration error further, connect to the app DB and run this query:

select id from databasechangelog where orderexecuted=(select max(orderexecuted) from databasechangelog);

This will tell us the last migration run.

Thanks for the input - it has given me something to work through.
So. I went back to Java 21.
Took a cold backup of the production environment.
Dropped and recreated in the dev environment.
Started the environment and confirmed it was working.

This is the upgrade path I took (and the SQL output you suggested), and where it finally errored. Some wonderings are why does the id jump from v54 to v53 to v52?

55.2 failed to run, but it changed the last entry in databasechangelog to v55.2025-06-03T16:52:38.

0.54.1 v54.2025-03-28T11:22:01
0.54.2 v53.2025-04-02T15:25:04
0.54.3 v53.2025-04-02T15:25:04
0.54.4 v53.2025-04-02T15:25:04
0.54.5 v53.2025-04-02T15:25:04
0.54.6 v53.2025-04-02T15:25:04
0.54.7 v53.2025-05-06T16:03:19
0.54.8 v53.2025-05-06T16:03:19
0.54.9 v54.2025-05-13T21:46:55
0.54.10 v52.2025-05-28T00:00:01
0.54.11 v52.2025-05-28T00:00:01
0.54.12 v52.2025-05-28T00:00:01
0.54.13 v52.2025-05-28T00:00:01
0.54.14 v52.2025-05-28T00:00:01
0.54.15 v52.2025-05-28T00:00:01
0.54.16 v52.2025-05-28T00:00:01
0.54.17 v52.2025-05-28T00:00:01
0.54.18 v52.2025-05-28T00:00:01
0.55.1 v56.2025-06-05T16:48:48
0.55.2 v55.2025-06-03T16:52:38 - FAILED

Error:

Metabase Enterprise Edition extensions are NOT PRESENT.
2026-03-17 22:10:49,502 INFO core.core :: Starting Metabase in STANDALONE mode
2026-03-17 22:10:49,698 INFO server.instance :: Launching Embedded Jetty Webserver with config:
{:port 8082}

2026-03-17 22:10:49,761 INFO core.core :: Starting Metabase version v0.55.2.2 (bd638c9) ...
2026-03-17 22:10:49,763 INFO core.core :: System info:
{"file.encoding" "UTF-8",
"java.runtime.name" "OpenJDK Runtime Environment",
"java.runtime.version" "21.0.10+7-LTS",
"java.vendor" "Eclipse Adoptium",
"java.vendor.url" "https://adoptium.net/",
"java.version" "21.0.10",
"java.vm.name" "OpenJDK 64-Bit Server VM",
"java.vm.version" "21.0.10+7-LTS",
"os.name" "Windows Server 2025",
"os.version" "10.0",
"user.language" "en",
"user.timezone" "America/Los_Angeles"}

2026-03-17 22:10:49,765 INFO plugins.impl :: Loading plugins in C:\Windows\System32\plugins...
2026-03-17 22:10:49,844 INFO util.files :: Extract file /modules/redshift.metabase-driver.jar -> C:\Windows\System32\plugins\redshift.metabase-driver.jar
2026-03-17 22:10:49,863 INFO util.files :: Extract file /modules/druid.metabase-driver.jar -> C:\Windows\System32\plugins\druid.metabase-driver.jar
2026-03-17 22:10:49,870 INFO util.files :: Extract file /modules/mongo.metabase-driver.jar -> C:\Windows\System32\plugins\mongo.metabase-driver.jar
2026-03-17 22:10:49,891 INFO util.files :: Extract file /modules/sqlite.metabase-driver.jar -> C:\Windows\System32\plugins\sqlite.metabase-driver.jar
2026-03-17 22:10:49,927 INFO util.files :: Extract file /modules/vertica.metabase-driver.jar -> C:\Windows\System32\plugins\vertica.metabase-driver.jar
2026-03-17 22:10:49,929 INFO util.files :: Extract file /modules/presto-jdbc.metabase-driver.jar -> C:\Windows\System32\plugins\presto-jdbc.metabase-driver.jar
2026-03-17 22:10:49,999 INFO util.files :: Extract file /modules/bigquery-cloud-sdk.metabase-driver.jar -> C:\Windows\System32\plugins\bigquery-cloud-sdk.metabase-driver.jar
2026-03-17 22:10:50,206 INFO util.files :: Extract file /modules/sparksql.metabase-driver.jar -> C:\Windows\System32\plugins\sparksql.metabase-driver.jar
2026-03-17 22:10:50,210 INFO util.files :: Extract file /modules/druid-jdbc.metabase-driver.jar -> C:\Windows\System32\plugins\druid-jdbc.metabase-driver.jar
2026-03-17 22:10:50,250 INFO util.files :: Extract file /modules/oracle.metabase-driver.jar -> C:\Windows\System32\plugins\oracle.metabase-driver.jar
2026-03-17 22:10:50,254 INFO util.files :: Extract file /modules/databricks.metabase-driver.jar -> C:\Windows\System32\plugins\databricks.metabase-driver.jar
2026-03-17 22:10:50,364 INFO util.files :: Extract file /modules/athena.metabase-driver.jar -> C:\Windows\System32\plugins\athena.metabase-driver.jar
2026-03-17 22:10:50,494 INFO util.files :: Extract file /modules/hive-like.metabase-driver.jar -> C:\Windows\System32\plugins\hive-like.metabase-driver.jar
2026-03-17 22:10:50,733 INFO util.files :: Extract file /modules/snowflake.metabase-driver.jar -> C:\Windows\System32\plugins\snowflake.metabase-driver.jar
2026-03-17 22:10:51,107 INFO util.files :: Extract file /modules/sqlserver.metabase-driver.jar -> C:\Windows\System32\plugins\sqlserver.metabase-driver.jar
2026-03-17 22:10:51,118 INFO util.files :: Extract file /modules/clickhouse.metabase-driver.jar -> C:\Windows\System32\plugins\clickhouse.metabase-driver.jar
2026-03-17 22:10:51,136 INFO util.files :: Extract file /modules/starburst.metabase-driver.jar -> C:\Windows\System32\plugins\starburst.metabase-driver.jar
2026-03-17 22:10:51,967 DEBUG plugins.lazy-loaded-driver :: Registering lazy loading driver :athena...
2026-03-17 22:10:51,970 INFO driver.impl :: Registered driver :athena (parents: [:sql-jdbc])
2026-03-17 22:10:51,980 DEBUG plugins.lazy-loaded-driver :: Registering lazy loading driver :bigquery-cloud-sdk...
2026-03-17 22:10:51,981 INFO driver.impl :: Registered driver :bigquery-cloud-sdk (parents: [:sql])
2026-03-17 22:10:51,986 DEBUG plugins.lazy-loaded-driver :: Registering lazy loading driver :clickhouse...
2026-03-17 22:10:51,987 INFO driver.impl :: Registered driver :clickhouse (parents: [:sql-jdbc])
2026-03-17 22:10:52,001 INFO plugins.dependencies :: Plugin 'Metabase Databricks Driver' depends on plugin 'Metabase Hive Like Abstract Driver'
2026-03-17 22:10:52,003 INFO plugins.dependencies :: Metabase Databricks Driver dependency {:plugin Metabase Hive Like Abstract Driver} satisfied? false
2026-03-17 22:10:52,004 INFO plugins.dependencies :: Plugins with unsatisfied deps: ["Metabase Databricks Driver"]
2026-03-17 22:10:52,010 DEBUG plugins.lazy-loaded-driver :: Registering lazy loading driver :druid-jdbc...
2026-03-17 22:10:52,012 INFO driver.impl :: Registered driver :druid-jdbc (parents: [:sql-jdbc])
2026-03-17 22:10:52,024 DEBUG plugins.lazy-loaded-driver :: Registering lazy loading driver :druid...
2026-03-17 22:10:52,025 INFO driver.impl :: Registered driver :druid
2026-03-17 22:10:52,040 DEBUG plugins.lazy-loaded-driver :: Registering lazy loading driver :hive-like...
2026-03-17 22:10:52,041 INFO driver.impl :: Registered abstract driver :hive-like (parents: [:sql-jdbc])
2026-03-17 22:10:52,044 INFO plugins.dependencies :: Metabase Databricks Driver dependency {:plugin Metabase Hive Like Abstract Driver} satisfied? true
2026-03-17 22:10:52,044 DEBUG plugins.initialize :: Dependencies satisfied; these plugins will now be loaded: ["Metabase Databricks Driver"]
2026-03-17 22:10:52,045 DEBUG plugins.lazy-loaded-driver :: Registering lazy loading driver :databricks...
2026-03-17 22:10:52,046 INFO driver.impl :: Registered driver :databricks (parents: [:hive-like])
2026-03-17 22:10:52,050 DEBUG plugins.lazy-loaded-driver :: Registering lazy loading driver :mongo...
2026-03-17 22:10:52,050 INFO driver.impl :: Registered driver :mongo
2026-03-17 22:10:52,054 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.

2026-03-17 22:10:52,054 INFO plugins.dependencies :: Metabase Oracle Driver dependency {:class oracle.jdbc.OracleDriver} satisfied? false
2026-03-17 22:10:52,054 INFO plugins.dependencies :: Plugins with unsatisfied deps: ["Metabase Oracle Driver"]
2026-03-17 22:10:52,063 DEBUG plugins.lazy-loaded-driver :: Registering lazy loading driver :presto-jdbc...
2026-03-17 22:10:52,063 INFO driver.impl :: Registered driver :presto-jdbc (parents: [:sql-jdbc])
2026-03-17 22:10:52,068 DEBUG plugins.lazy-loaded-driver :: Registering lazy loading driver :redshift...
2026-03-17 22:10:52,068 INFO driver.impl :: Registered driver :redshift (parents: [:postgres])
2026-03-17 22:10:52,084 DEBUG plugins.lazy-loaded-driver :: Registering lazy loading driver :snowflake...
2026-03-17 22:10:52,085 INFO driver.impl :: Registered driver :snowflake (parents: [:sql-jdbc])
2026-03-17 22:10:52,089 INFO plugins.dependencies :: Plugin 'Metabase Spark SQL Driver' depends on plugin 'Metabase Hive Like Abstract Driver'
2026-03-17 22:10:52,090 INFO plugins.dependencies :: Metabase Spark SQL Driver dependency {:plugin Metabase Hive Like Abstract Driver} satisfied? true
2026-03-17 22:10:52,090 DEBUG plugins.lazy-loaded-driver :: Registering lazy loading driver :sparksql...
2026-03-17 22:10:52,091 INFO driver.impl :: Registered driver :sparksql (parents: [:hive-like])
2026-03-17 22:10:52,095 DEBUG plugins.lazy-loaded-driver :: Registering lazy loading driver :sqlite...
2026-03-17 22:10:52,096 INFO driver.impl :: Registered driver :sqlite (parents: [:sql-jdbc])
2026-03-17 22:10:52,098 DEBUG plugins.lazy-loaded-driver :: Registering lazy loading driver :sqlserver...
2026-03-17 22:10:52,099 INFO driver.impl :: Registered driver :sqlserver (parents: [:sql-jdbc])
2026-03-17 22:10:52,103 DEBUG plugins.lazy-loaded-driver :: Registering lazy loading driver :starburst...
2026-03-17 22:10:52,104 INFO driver.impl :: Registered driver :starburst (parents: [:sql-jdbc])
2026-03-17 22:10:52,106 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.

2026-03-17 22:10:52,107 INFO plugins.dependencies :: Metabase Vertica Driver dependency {:class com.vertica.jdbc.Driver} satisfied? false
2026-03-17 22:10:52,107 INFO plugins.dependencies :: Plugins with unsatisfied deps: ["Metabase Oracle Driver" "Metabase Vertica Driver"]
2026-03-17 22:10:52,111 INFO core.core :: Setting up and migrating Metabase DB. Please sit tight, this may take a minute...
2026-03-17 22:10:52,114 INFO app-db.setup :: Verifying mysql Database Connection ...
2026-03-17 22:10:52,262 INFO app-db.setup :: Successfully verified MySQL 8.0.45 application database connection.
2026-03-17 22:10:52,262 INFO app-db.setup :: Checking if a database downgrade is required...
2026-03-17 22:10:52,868 INFO liquibase :: Parsed changelog file 'liquibase.yaml'
2026-03-17 22:10:53,055 INFO app-db.setup :: Running Database Migrations...
2026-03-17 22:10:53,056 INFO app-db.setup :: Setting up Liquibase...
2026-03-17 22:10:53,173 INFO liquibase :: Parsed changelog file 'liquibase.yaml'
2026-03-17 22:10:53,196 INFO app-db.setup :: Liquibase is ready.
2026-03-17 22:10:53,196 INFO app-db.liquibase :: Checking if Database has unrun migrations...
2026-03-17 22:10:53,293 INFO liquibase :: Parsed changelog file 'liquibase.yaml'
2026-03-17 22:10:53,328 INFO liquibase.changelog :: Reading from metabasedev.databasechangelog
2026-03-17 22:10:53,687 INFO app-db.liquibase :: Database has unrun migrations. Checking if migration lock is taken...
2026-03-17 22:10:53,699 INFO liquibase.logging :: Successfully acquired change log lock
2026-03-17 22:10:53,700 INFO app-db.liquibase :: No migration lock found.
2026-03-17 22:10:53,700 INFO app-db.liquibase :: Migration lock acquired.
2026-03-17 22:10:53,819 INFO liquibase :: Parsed changelog file 'liquibase.yaml'
2026-03-17 22:10:53,838 INFO liquibase.changelog :: Reading from metabasedev.databasechangelog
2026-03-17 22:10:53,963 INFO app-db.liquibase :: Running 5 migrations ...
2026-03-17 22:10:54,523 INFO liquibase.changelog :: Reading from metabasedev.databasechangelog
2026-03-17 22:10:54,650 INFO liquibase.command :: Using deploymentId: 3810654650
2026-03-17 22:10:54,655 INFO liquibase.changelog :: Reading from metabasedev.databasechangelog
2026-03-17 22:10:54,710 INFO liquibase.changelog :: Marking ChangeSet: "migrations/001_update_migrations.yaml::v55.2025-06-03T16:52:38::metamben" as ran despite precondition failure due to onFail='MARK_RAN':
liquibase.yaml : Not precondition failed

2026-03-17 22:10:54,763 INFO liquibase.snapshot :: Creating snapshot
2026-03-17 22:10:54,771 ERROR liquibase.changelog :: ChangeSet migrations/001_update_migrations.yaml::v55.2025-06-03T16:52:48::metamben encountered an exception.
liquibase.exception.DatabaseException: (conn=271) Key column 'metabot_entity_id' doesn't exist in table [Failed SQL: (1072) CREATE INDEX idx_metabot_prompt_metabot_entity_id ON metabasedev.metabot_prompt(metabot_entity_id)]
at liquibase.executor.jvm.JdbcExecutor$ExecuteStatementCallback.doInStatement(JdbcExecutor.java:470)
at liquibase.executor.jvm.JdbcExecutor.execute(JdbcExecutor.java:77)
at liquibase.executor.jvm.JdbcExecutor.execute(JdbcExecutor.java:179)
at liquibase.executor.AbstractExecutor.execute(AbstractExecutor.java:141)
at liquibase.database.AbstractJdbcDatabase.executeStatements(AbstractJdbcDatabase.java:1285)
at liquibase.changelog.ChangeSet.execute(ChangeSet.java:755)
at liquibase.changelog.visitor.UpdateVisitor.executeAcceptedChange(UpdateVisitor.java:119)
at liquibase.changelog.visitor.UpdateVisitor.visit(UpdateVisitor.java:68)
at liquibase.changelog.ChangeLogIterator$2.lambda$run$0(ChangeLogIterator.java:133)
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 liquibase.changelog.ChangeLogIterator$2.run(ChangeLogIterator.java:122)
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 liquibase.Scope.child(Scope.java:252)
at liquibase.Scope.child(Scope.java:256)
at liquibase.changelog.ChangeLogIterator.run(ChangeLogIterator.java:89)
at liquibase.command.core.AbstractUpdateCommandStep.lambda$run$0(AbstractUpdateCommandStep.java:110)
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 liquibase.command.core.AbstractUpdateCommandStep.run(AbstractUpdateCommandStep.java:108)
at liquibase.command.core.UpdateCommandStep.run(UpdateCommandStep.java:105)
at liquibase.command.CommandScope.execute(CommandScope.java:217)
at liquibase.Liquibase.lambda$update$0(Liquibase.java:245)
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 liquibase.Liquibase.runInScope(Liquibase.java:1419)
at liquibase.Liquibase.update(Liquibase.java:234)
at liquibase.Liquibase.update(Liquibase.java:212)
at liquibase.Liquibase.update(Liquibase.java:194)
at metabase.app_db.liquibase$migrate_up_if_needed_BANG_$fn__47111.invoke(liquibase.clj:379)
at metabase.app_db.liquibase$run_in_scope_locked$reify__47107.run(liquibase.clj:344)
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.app_db.liquibase$run_in_scope_locked.invokeStatic(liquibase.clj:337)
at metabase.app_db.liquibase$run_in_scope_locked.invoke(liquibase.clj:320)
at metabase.app_db.liquibase$migrate_up_if_needed_BANG_.invokeStatic(liquibase.clj:368)
at metabase.app_db.liquibase$migrate_up_if_needed_BANG_.invoke(liquibase.clj:361)
at metabase.app_db.setup$migrate_BANG_47229__47230$fn__47231.invoke(setup.clj:89)
at metabase.app_db.liquibase$do_with_liquibase47041__47042$f_STAR___47043.invoke(liquibase.clj:139)
at metabase.app_db.liquibase$do_with_liquibase47041__47042.invokeStatic(liquibase.clj:142)
at metabase.app_db.liquibase$do_with_liquibase47041__47042.invoke(liquibase.clj:130)
at metabase.app_db.setup$migrate_BANG_47229__47230.invokeStatic(setup.clj:78)
at metabase.app_db.setup$migrate_BANG_47229__47230.doInvoke(setup.clj:59)
at clojure.lang.RestFn.invoke(RestFn.java:428)
at metabase.app_db.setup$run_schema_migrations_BANG_47280__47281.invokeStatic(setup.clj:186)
at metabase.app_db.setup$run_schema_migrations_BANG_47280__47281.invoke(setup.clj:181)
at metabase.app_db.setup$setup_db_BANG_47287__47288$fn__47291$fn__47292.invoke(setup.clj:204)
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.app_db.setup$setup_db_BANG_47287__47288$fn__47291.invoke(setup.clj:198)
at metabase.app_db.setup$setup_db_BANG_47287__47288.invokeStatic(setup.clj:197)
at metabase.app_db.setup$setup_db_BANG_47287__47288.invoke(setup.clj:190)
at metabase.app_db.core$setup_db_BANG_$fn__47488.invoke(core.clj:122)
at metabase.app_db.core$setup_db_BANG_.invokeStatic(core.clj:117)
at metabase.app_db.core$setup_db_BANG_.doInvoke(core.clj:104)
at clojure.lang.RestFn.invoke(RestFn.java:424)
at metabase.core.core$init_BANG__STAR_.invokeStatic(core.clj:137)
at metabase.core.core$init_BANG__STAR_.invoke(core.clj:116)
at metabase.core.core$init_BANG_.invokeStatic(core.clj:193)
at metabase.core.core$init_BANG_.invoke(core.clj:188)
at metabase.core.core$start_normally.invokeStatic(core.clj:207)
at metabase.core.core$start_normally.invoke(core.clj:199)
at metabase.core.core$entrypoint.invokeStatic(core.clj:242)
at metabase.core.core$entrypoint.doInvoke(core.clj:233)
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)
Caused by: java.sql.SQLSyntaxErrorException: (conn=271) Key column 'metabot_entity_id' doesn't exist in table
at org.mariadb.jdbc.internal.util.exceptions.ExceptionFactory.createException(ExceptionFactory.java:62)
at org.mariadb.jdbc.internal.util.exceptions.ExceptionFactory.create(ExceptionFactory.java:158)
at org.mariadb.jdbc.MariaDbStatement.executeExceptionEpilogue(MariaDbStatement.java:262)
at org.mariadb.jdbc.MariaDbStatement.executeInternal(MariaDbStatement.java:362)
at org.mariadb.jdbc.MariaDbStatement.execute(MariaDbStatement.java:500)
at com.mchange.v2.c3p0.impl.NewProxyStatement.execute(NewProxyStatement.java:1341)
at liquibase.executor.jvm.JdbcExecutor$ExecuteStatementCallback.doInStatement(JdbcExecutor.java:464)
... 86 more
Caused by: org.mariadb.jdbc.internal.util.exceptions.MariaDbSqlException: Key column 'metabot_entity_id' doesn't exist in table
at org.mariadb.jdbc.internal.util.exceptions.MariaDbSqlException.of(MariaDbSqlException.java:34)
at org.mariadb.jdbc.internal.protocol.AbstractQueryProtocol.exceptionWithQuery(AbstractQueryProtocol.java:195)
at org.mariadb.jdbc.internal.protocol.AbstractQueryProtocol.executeQuery(AbstractQueryProtocol.java:263)
at org.mariadb.jdbc.MariaDbStatement.executeInternal(MariaDbStatement.java:356)
... 89 more
Caused by: java.sql.SQLException: Key column 'metabot_entity_id' doesn't exist in table
at org.mariadb.jdbc.internal.protocol.AbstractQueryProtocol.readErrorPacket(AbstractQueryProtocol.java:1693)
at org.mariadb.jdbc.internal.protocol.AbstractQueryProtocol.readPacket(AbstractQueryProtocol.java:1555)
at org.mariadb.jdbc.internal.protocol.AbstractQueryProtocol.getResult(AbstractQueryProtocol.java:1518)
at org.mariadb.jdbc.internal.protocol.AbstractQueryProtocol.executeQuery(AbstractQueryProtocol.java:257)
... 90 more

UPDATE SUMMARY

Run: 5
Previously run: 551
Filtered out: 5

Total change sets: 561

FILTERED CHANGE SETS SUMMARY
DBMS mismatch: 5

2026-03-17 22:10:54,796 INFO liquibase.util :: UPDATE SUMMARY
2026-03-17 22:10:54,797 INFO liquibase.util :: Run: 5
2026-03-17 22:10:54,797 INFO liquibase.util :: Previously run: 551
2026-03-17 22:10:54,797 INFO liquibase.util :: Filtered out: 5
2026-03-17 22:10:54,798 INFO liquibase.util :: -------------------------------
2026-03-17 22:10:54,798 INFO liquibase.util :: Total change sets: 561
2026-03-17 22:10:54,798 INFO liquibase.util :: FILTERED CHANGE SETS SUMMARY
2026-03-17 22:10:54,798 INFO liquibase.util :: DBMS mismatch: 5
2026-03-17 22:10:54,808 INFO liquibase.util :: Update summary generated
2026-03-17 22:10:54,823 INFO liquibase.command :: Update command encountered an exception.
2026-03-17 22:10:54,824 INFO liquibase.logging :: Successfully released change log lock
2026-03-17 22:10:54,829 INFO liquibase.command :: Logging exception.
2026-03-17 22:10:54,829 INFO liquibase.command :: Command execution complete
2026-03-17 22:10:54,849 ERROR core.core :: Metabase Initialization FAILED
liquibase.exception.CommandExecutionException: liquibase.exception.LiquibaseException: liquibase.exception.MigrationFailedException: Migration failed for changeset migrations/001_update_migrations.yaml::v55.2025-06-03T16:52:48::metamben:
Reason: liquibase.exception.DatabaseException: (conn=271) Key column 'metabot_entity_id' doesn't exist in table [Failed SQL: (1072) CREATE INDEX idx_metabot_prompt_metabot_entity_id ON metabasedev.metabot_prompt(metabot_entity_id)]
at liquibase.command.CommandScope.execute(CommandScope.java:253)
at liquibase.Liquibase.lambda$update$0(Liquibase.java:245)
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 liquibase.Liquibase.runInScope(Liquibase.java:1419)
at liquibase.Liquibase.update(Liquibase.java:234)
at liquibase.Liquibase.update(Liquibase.java:212)
at liquibase.Liquibase.update(Liquibase.java:194)
at metabase.app_db.liquibase$migrate_up_if_needed_BANG_$fn__47111.invoke(liquibase.clj:379)
at metabase.app_db.liquibase$run_in_scope_locked$reify__47107.run(liquibase.clj:344)
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.app_db.liquibase$run_in_scope_locked.invokeStatic(liquibase.clj:337)
at metabase.app_db.liquibase$run_in_scope_locked.invoke(liquibase.clj:320)
at metabase.app_db.liquibase$migrate_up_if_needed_BANG_.invokeStatic(liquibase.clj:368)
at metabase.app_db.liquibase$migrate_up_if_needed_BANG_.invoke(liquibase.clj:361)
at metabase.app_db.setup$migrate_BANG_47229__47230$fn__47231.invoke(setup.clj:89)
at metabase.app_db.liquibase$do_with_liquibase47041__47042$f_STAR___47043.invoke(liquibase.clj:139)
at metabase.app_db.liquibase$do_with_liquibase47041__47042.invokeStatic(liquibase.clj:142)
at metabase.app_db.liquibase$do_with_liquibase47041__47042.invoke(liquibase.clj:130)
at metabase.app_db.setup$migrate_BANG_47229__47230.invokeStatic(setup.clj:78)
at metabase.app_db.setup$migrate_BANG_47229__47230.doInvoke(setup.clj:59)
at clojure.lang.RestFn.invoke(RestFn.java:428)
at metabase.app_db.setup$run_schema_migrations_BANG_47280__47281.invokeStatic(setup.clj:186)
at metabase.app_db.setup$run_schema_migrations_BANG_47280__47281.invoke(setup.clj:181)
at metabase.app_db.setup$setup_db_BANG_47287__47288$fn__47291$fn__47292.invoke(setup.clj:204)
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.app_db.setup$setup_db_BANG_47287__47288$fn__47291.invoke(setup.clj:198)
at metabase.app_db.setup$setup_db_BANG_47287__47288.invokeStatic(setup.clj:197)
at metabase.app_db.setup$setup_db_BANG_47287__47288.invoke(setup.clj:190)
at metabase.app_db.core$setup_db_BANG_$fn__47488.invoke(core.clj:122)
at metabase.app_db.core$setup_db_BANG_.invokeStatic(core.clj:117)
at metabase.app_db.core$setup_db_BANG_.doInvoke(core.clj:104)
at clojure.lang.RestFn.invoke(RestFn.java:424)
at metabase.core.core$init_BANG__STAR_.invokeStatic(core.clj:137)
at metabase.core.core$init_BANG__STAR_.invoke(core.clj:116)
at metabase.core.core$init_BANG_.invokeStatic(core.clj:193)
at metabase.core.core$init_BANG_.invoke(core.clj:188)
at metabase.core.core$start_normally.invokeStatic(core.clj:207)
at metabase.core.core$start_normally.invoke(core.clj:199)
at metabase.core.core$entrypoint.invokeStatic(core.clj:242)
at metabase.core.core$entrypoint.doInvoke(core.clj:233)
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)
Caused by: liquibase.exception.LiquibaseException: liquibase.exception.MigrationFailedException: Migration failed for changeset migrations/001_update_migrations.yaml::v55.2025-06-03T16:52:48::metamben:
Reason: liquibase.exception.DatabaseException: (conn=271) Key column 'metabot_entity_id' doesn't exist in table [Failed SQL: (1072) CREATE INDEX idx_metabot_prompt_metabot_entity_id ON metabasedev.metabot_prompt(metabot_entity_id)]
at liquibase.changelog.ChangeLogIterator.run(ChangeLogIterator.java:151)
at liquibase.command.core.AbstractUpdateCommandStep.lambda$run$0(AbstractUpdateCommandStep.java:110)
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 liquibase.command.core.AbstractUpdateCommandStep.run(AbstractUpdateCommandStep.java:108)
at liquibase.command.core.UpdateCommandStep.run(UpdateCommandStep.java:105)
at liquibase.command.CommandScope.execute(CommandScope.java:217)
... 58 more
Caused by: liquibase.exception.MigrationFailedException: Migration failed for changeset migrations/001_update_migrations.yaml::v55.2025-06-03T16:52:48::metamben:
Reason: liquibase.exception.DatabaseException: (conn=271) Key column 'metabot_entity_id' doesn't exist in table [Failed SQL: (1072) CREATE INDEX idx_metabot_prompt_metabot_entity_id ON metabasedev.metabot_prompt(metabot_entity_id)]
at liquibase.changelog.ChangeSet.execute(ChangeSet.java:797)
at liquibase.changelog.visitor.UpdateVisitor.executeAcceptedChange(UpdateVisitor.java:119)
at liquibase.changelog.visitor.UpdateVisitor.visit(UpdateVisitor.java:68)
at liquibase.changelog.ChangeLogIterator$2.lambda$run$0(ChangeLogIterator.java:133)
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 liquibase.changelog.ChangeLogIterator$2.run(ChangeLogIterator.java:122)
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 liquibase.Scope.child(Scope.java:252)
at liquibase.Scope.child(Scope.java:256)
at liquibase.changelog.ChangeLogIterator.run(ChangeLogIterator.java:89)
... 66 more
Caused by: liquibase.exception.DatabaseException: (conn=271) Key column 'metabot_entity_id' doesn't exist in table [Failed SQL: (1072) CREATE INDEX idx_metabot_prompt_metabot_entity_id ON metabasedev.metabot_prompt(metabot_entity_id)]
at liquibase.executor.jvm.JdbcExecutor$ExecuteStatementCallback.doInStatement(JdbcExecutor.java:470)
at liquibase.executor.jvm.JdbcExecutor.execute(JdbcExecutor.java:77)
at liquibase.executor.jvm.JdbcExecutor.execute(JdbcExecutor.java:179)
at liquibase.executor.AbstractExecutor.execute(AbstractExecutor.java:141)
at liquibase.database.AbstractJdbcDatabase.executeStatements(AbstractJdbcDatabase.java:1285)
at liquibase.changelog.ChangeSet.execute(ChangeSet.java:755)
... 81 more
Caused by: java.sql.SQLSyntaxErrorException: (conn=271) Key column 'metabot_entity_id' doesn't exist in table
at org.mariadb.jdbc.internal.util.exceptions.ExceptionFactory.createException(ExceptionFactory.java:62)
at org.mariadb.jdbc.internal.util.exceptions.ExceptionFactory.create(ExceptionFactory.java:158)
at org.mariadb.jdbc.MariaDbStatement.executeExceptionEpilogue(MariaDbStatement.java:262)
at org.mariadb.jdbc.MariaDbStatement.executeInternal(MariaDbStatement.java:362)
at org.mariadb.jdbc.MariaDbStatement.execute(MariaDbStatement.java:500)
at com.mchange.v2.c3p0.impl.NewProxyStatement.execute(NewProxyStatement.java:1341)
at liquibase.executor.jvm.JdbcExecutor$ExecuteStatementCallback.doInStatement(JdbcExecutor.java:464)
... 86 more
Caused by: org.mariadb.jdbc.internal.util.exceptions.MariaDbSqlException: Key column 'metabot_entity_id' doesn't exist in table
at org.mariadb.jdbc.internal.util.exceptions.MariaDbSqlException.of(MariaDbSqlException.java:34)
at org.mariadb.jdbc.internal.protocol.AbstractQueryProtocol.exceptionWithQuery(AbstractQueryProtocol.java:195)
at org.mariadb.jdbc.internal.protocol.AbstractQueryProtocol.executeQuery(AbstractQueryProtocol.java:263)
at org.mariadb.jdbc.MariaDbStatement.executeInternal(MariaDbStatement.java:356)
... 89 more
Caused by: java.sql.SQLException: Key column 'metabot_entity_id' doesn't exist in table
at org.mariadb.jdbc.internal.protocol.AbstractQueryProtocol.readErrorPacket(AbstractQueryProtocol.java:1693)
at org.mariadb.jdbc.internal.protocol.AbstractQueryProtocol.readPacket(AbstractQueryProtocol.java:1555)
at org.mariadb.jdbc.internal.protocol.AbstractQueryProtocol.getResult(AbstractQueryProtocol.java:1518)
at org.mariadb.jdbc.internal.protocol.AbstractQueryProtocol.executeQuery(AbstractQueryProtocol.java:257)
... 90 more
2026-03-17 22:10:54,854 INFO core.core :: Metabase Shutting Down ...
2026-03-17 22:10:54,854 INFO server.instance :: Shutting Down Embedded Jetty Webserver
2026-03-17 22:10:54,872 WARN app-db.liquibase :: ()

The odd migration ID was a backported migration to support a permission change in v56. The commit that introduced it is here, for reference:

For the latest failure, it seems like we have an obstructing table again. Migration v55.2025-06-03T16:52:38 creates the metabot_prompt table but (erroneously) has a onFail=MARK_RAN, so if there’s an obstructing table there it leaves it alone, but it has the wrong schema so the index creation fails. (A later change removes the onFail=MARK_RAN.) But the table somehow came into existence before the migration that creates it.

Can you post the output of DESCRIBE metabot_prompt? Maybe we can figure out where it came from. There was some column renaming that happened later that might provide a clue.

It might be interesting to check the backup and see if its in there.

I have rolled back to 0.54.1, and this is what that outputs. My understanding this table got introduced with changeid v55.2025-06-03T16:52:38, right?

It’s missing metabot_entity_id..

id int NO PRI auto_increment
model varchar(32) NO
card_id int NO MUL
entity_id char(21) YES UNI
prompt longtext NO
created_at timestamp(6) NO CURRENT_TIMESTAMP(6) DEFAULT_GENERATED
updated_at timestamp(6) NO CURRENT_TIMESTAMP(6) DEFAULT_GENERATED
metabot_id int NO MUL

I just tried manually adding it (metabot_entity_id) then went from 54.1 to 55.1 successfully and then also to 55.2.

So I went through all minors to 55.21, then to 56.1 - it failed with

2026-03-18 15:48:55,164 ERROR liquibase.changelog :: ChangeSet migrations/001_update_migrations.yaml::v55.2025-06-23T11:29:00::bronsa encountered an exception.
liquibase.exception.DatabaseException: (conn=446) Table 'metabase_field_user_settings' already exists [Failed SQL: (1050)

describe metabase_field_user_settings gives:

field_id int NO PRI
created_at timestamp(6) NO CURRENT_TIMESTAMP(6) DEFAULT_GENERATED
updated_at timestamp(6) NO CURRENT_TIMESTAMP(6) DEFAULT_GENERATED
semantic_type varchar(254) YES
description longtext YES
display_name varchar(254) YES
visibility_type varchar(32) YES
fk_target_field_id int YES
has_field_values longtext YES
effective_type varchar(255) YES
coercion_strategy varchar(255) YES
caveats longtext YES
points_of_interest longtext YES
nfc_path varchar(254) YES
json_unfolding bit(1) YES
settings longtext YES

This looks right according to the documentation.

Databasechangelog shows v55.2025-06-09T01:00:00

Do I just blow the table away (noting entries) and keep going through this process, or is there a way to flag this change as complete?

I’m trying to recal what I may have done to trigger this. I do recall we upgraded to a major, and it broke some on our dashboards, so we rolled back, BUT I may have done a restore without DUMPing the database first - it’s the only thing i can think of, to why this is occurring.

Thanks for your help.

What it means is that migration v56.2025-08-22T12:00:10 has run on the database, ahead of the version you’re running. That migration drops the column metabot_entity_id. (The cluster of migrations there changes metabot_entity_id to metabot_id.) You should be able to confirm that id appears in the databasechangelog.

If that is the case then your app database is inconsistent.

It seems like you have multiple metabase versions using the same app database and they are colliding. Or your app database has serious storage issues. It’s also possible all the roll back/forwards are buggy (by nature, some of the migrations aren’t 100% reversible). Best that can be done there is surgery to address problems, though if it isn’t perfect, they will resurface later when those objects are changed again in a future migration. If you’re going to go that route I suggest standing up a separate instance & database running the desired target version so you have a clean database to compare against.

I restored to my production db version (54.1) and I did this: SELECT * FROM metabasedev.databasechangelog where id like '%v56%', and it came up blank.

Surgery appears to be the only way moving forward. How does scheme matching work? Like above, if metabase_field_user_settings already exists with the same fields, or is it just a case this table or column exists before it should and just has to be removed and let the update process do its thing?

You’ll have to read the migration files to determine what needs to happen. They’re located here in the source:

I have been able to unpick all the updates, and an upgrade now works - thanks @dwhitemv !!

Glad you were able to get it sorted.

I need to spend some time learning Liquibase in more detail. It’d help when working with some of these odd corruption cases.