Fatal error when I start metabase on mac app

Hey there,

I keep getting a fatal error when I start metabase using the mac app. I tried to uninstall and re-install but haven't had much luck. I think it's set up as a H2 db which shouldn't be the case but can't find a way to change that? I'm set up on someone else's version of the db.

Any help much appreciated.

The Metabase server terminated unexpectedly.

Messages:

INFO driver.impl :: Registered driver :h2 (parents: [:sql-jdbc]) 🚚

INFO driver.impl :: Registered driver :mysql (parents: [:sql-jdbc]) 🚚

INFO metabase.core :: Setting up and migrating Metabase DB. Please sit tight, this may take a minute...

WARN db.env :: WARNING: Using Metabase with an H2 application database is not recommended for production deployments. For production deployments, we highly recommend using Postgres, MySQL, or MariaDB instead. If you decide to continue to use H2, please be sure to back up the database file regularly. For more information, see https://metabase.com/docs/latest/operations-guide/migrating-from-h2.html

INFO db.setup :: Verifying h2 Database Connection ...

ERROR metabase.core :: Metabase Initialization FAILED

clojure.lang.ExceptionInfo: Unable to connect to Metabase h2 DB. {}

at metabase.db.setup$fn__35116$verify_db_connection__35121$fn__35122$fn__35123.invoke(setup.clj:102)

at metabase.db.setup$fn__35116$verify_db_connection__35121$fn__35122.invoke(setup.clj:100)

at metabase.db.setup$fn__35116$verify_db_connection__35121.invoke(setup.clj:94)

at metabase.db.setup$setup_db_BANG_$fn__35151$fn__35152.invoke(setup.clj:142)

at metabase.util$do_with_us_locale.invokeStatic(util.clj:687)

at metabase.util$do_with_us_locale.invoke(util.clj:673)

at metabase.db.setup$setup_db_BANG_$fn__35151.invoke(setup.clj:141)

at metabase.db.setup$setup_db_BANG_.invokeStatic(setup.clj:140)

at metabase.db.setup$setup_db_BANG_.invoke(setup.clj:136)

at metabase.db$setup_db_BANG_$fn__35165.invoke(db.clj:61)

at metabase.db$setup_db_BANG_.invokeStatic(db.clj:56)

at metabase.db$setup_db_BANG_.invoke(db.clj:51)

at metabase.core$init_BANG_.invokeStatic(core.clj:95)

at metabase.core$init_BANG_.invoke(core.clj:74)

at metabase.core$start_normally.invokeStatic(core.clj:139)

at metabase.core$start_normally.invoke(core.clj:133)

at metabase.core$_main.invokeStatic(core.clj:172)

at metabase.core$_main.doInvoke(core.clj:166)

at clojure.lang.RestFn.invoke(RestFn.java:397)

at clojure.lang.AFn.applyToHelper(AFn.java:152)

at clojure.lang.RestFn.applyTo(RestFn.java:132)

at metabase.core.main(Unknown Source)

Caused by: org.h2.jdbc.JdbcSQLException: Database may be already in use: null. Possible solutions: close all other connection(s); use the server mode [90020-197]

at org.h2.message.DbException.getJdbcSQLException(DbException.java:357)

at org.h2.message.DbException.get(DbException.java:168)

at org.h2.mvstore.db.MVTableEngine$Store.convertIllegalStateException(MVTableEngine.java:188)

at org.h2.mvstore.db.MVTableEngine$Store.open(MVTableEngine.java:168)

at org.h2.mvstore.db.MVTableEngine.init(MVTableEngine.java:100)

at org.h2.engine.Database.getPageStore(Database.java:2538)

at org.h2.engine.Database.open(Database.java:709)

at org.h2.engine.Database.openDatabase(Database.java:286)

at org.h2.engine.Database.<init>(Database.java:280)

at org.h2.engine.Engine.openSession(Engine.java:66)

at org.h2.engine.Engine.openSession(Engine.java:179)

at org.h2.engine.Engine.createSessionAndValidate(Engine.java:157)

at org.h2.engine.Engine.createSession(Engine.java:140)

at org.h2.engine.Engine.createSession(Engine.java:28)

at org.h2.engine.SessionRemote.connectEmbeddedOrServer(SessionRemote.java:351)

at org.h2.jdbc.JdbcConnection.<init>(JdbcConnection.java:124)

at org.h2.jdbc.JdbcConnection.<init>(JdbcConnection.java:103)

at org.h2.Driver.connect(Driver.java:69)

at java.sql/java.sql.DriverManager.getConnection(Unknown Source)

at java.sql/java.sql.DriverManager.getConnection(Unknown Source)

at clojure.java.jdbc$get_driver_connection.invokeStatic(jdbc.clj:271)

at clojure.java.jdbc$get_driver_connection.invoke(jdbc.clj:250)

at clojure.java.jdbc$get_connection.invokeStatic(jdbc.clj:411)

at clojure.java.jdbc$get_connection.invoke(jdbc.clj:274)

at clojure.java.jdbc$db_query_with_resultset_STAR_.invokeStatic(jdbc.clj:1111)

at clojure.java.jdbc$db_query_with_resultset_STAR_.invoke(jdbc.clj:1093)

at clojure.java.jdbc$query.invokeStatic(jdbc.clj:1182)

at clojure.java.jdbc$query.invoke(jdbc.clj:1144)

at clojure.java.jdbc$query.invokeStatic(jdbc.clj:1160)

at clojure.java.jdbc$query.invoke(jdbc.clj:1144)

at metabase.driver.sql_jdbc.connection$can_connect_with_spec_QMARK_.invokeStatic(connection.clj:199)

at metabase.driver.sql_jdbc.connection$can_connect_with_spec_QMARK_.invoke(connection.clj:196)

at metabase.db.setup$fn__35116$verify_db_connection__35121$fn__35122$fn__35123.invoke(setup.clj:100)

... 21 more

Caused by: java.lang.IllegalStateException: The file is locked: nio:/Users/rachelpandyan/Library/Application Support/Metabase/metabase.db.mv.db [1.4.197/7]

at org.h2.mvstore.DataUtils.newIllegalStateException(DataUtils.java:870)

at org.h2.mvstore.FileStore.open(FileStore.java:173)

at org.h2.mvstore.MVStore.<init>(MVStore.java:350)

at org.h2.mvstore.MVStore$Builder.open(MVStore.java:2934)

at org.h2.mvstore.db.MVTableEngine$Store.open(MVTableEngine.java:155)

... 50 more

INFO metabase.core :: Metabase Shutting Down ...

INFO metabase.server :: Shutting Down Embedded Jetty Webserver

INFO metabase.core :: Metabase Shutdown COMPLETE

Hi @TechGetter
I would recommend not using the Mac App, but use the JAR or Docker instead, which gives you more control.
I don't understand what "someone else's version of the db" means. If you have copied another H2 file into your ~/Library/Application Support/Metabase/, then you probably need to change the permissions.

1 Like