UPDATE 1 :
After changing the docker db path the migration from H2 v1 to H2 v2 starts on version v0.46.6.1 but it fails due to a syntax error :
'com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException: You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near ''distinct `raQuote__via__quote_id`.`id` as `IDasd` `raBorrower__via__borrower_id`'' at line 2'
Metabase is linked to our MariaDB database.
Hi there !
I wanted to update my Metabase docker image to the version V0.46.6.1.
Doing this I noticed this error when starting my docker container :
2023-07-25 15:05:10,674 INFO db.setup :: Verifying h2 Database Connection ...
2023-07-25 15:05:10,752 INFO db.update-h2 :: H2 v1 database detected, updating...
2023-07-25 15:05:10,757 INFO db.update-h2 :: Downloading https://repo1.maven.org/maven2/com/h2database/h2/1.4.197/h2-1.4.197.jar
2023-07-25 15:05:11,560 ERROR db.update-h2 :: Failed to update H2 database: #error {
:cause /tmp/h2-1.4.197.jar (Permission denied)
:via
[{:type java.io.FileNotFoundException
:message /tmp/h2-1.4.197.jar (Permission denied)
:at [java.io.FileOutputStream open0 nil -2]}]
:trace
[[java.io.FileOutputStream open0 nil -2]
[java.io.FileOutputStream open nil -1]
[java.io.FileOutputStream <init> nil -1]
[java.io.FileOutputStream <init> nil -1]
[clojure.java.io$fn__11655 invokeStatic io.clj 319]
[clojure.java.io$fn__11655 invoke io.clj 319]
[clojure.lang.MultiFn invoke MultiFn.java 239]
[clojure.java.io$copy invokeStatic io.clj 406]
[clojure.java.io$copy doInvoke io.clj 391]
[clojure.lang.RestFn invoke RestFn.java 425]
[metabase.db.update_h2$update_BANG_ invokeStatic update_h2.clj 73]
[metabase.db.update_h2$update_BANG_ invoke update_h2.clj 68]
[metabase.db.update_h2$update_if_needed invokeStatic update_h2.clj 98]
[metabase.db.update_h2$update_if_needed invoke update_h2.clj 90]
[metabase.db.data_source.DataSource getConnection data_source.clj 29]
[com.mchange.v2.c3p0.WrapperConnectionPoolDataSource getPooledConnection WrapperConnectionPoolDataSource.java 161]
[com.mchange.v2.c3p0.impl.C3P0PooledConnectionPool$1PooledConnectionResourcePoolManager acquireResource C3P0PooledConnectionPool.java 213]
[com.mchange.v2.resourcepool.BasicResourcePool doAcquire BasicResourcePool.java 1176]
[com.mchange.v2.resourcepool.BasicResourcePool doAcquireAndDecrementPendingAcquiresWithinLockOnSuccess BasicResourcePool.java 1163]
[com.mchange.v2.resourcepool.BasicResourcePool access$700 BasicResourcePool.java 44]
[com.mchange.v2.resourcepool.BasicResourcePool$ScatteredAcquireTask run BasicResourcePool.java 1908]
[com.mchange.v2.async.ThreadPoolAsynchronousRunner$PoolThread run ThreadPoolAsynchronousRunner.java 696]]}
as H2 databases are not recommended for production I then assumed I had to migrate, but I had this error when running the update command to Postgres database :
2023-07-25 15:12:53,749 INFO cmd.copy :: Set up h2 source database and run migrations...
2023-07-25 15:12:53,752 INFO db.setup :: Verifying h2 Database Connection ...
2023-07-25 15:12:53,836 ERROR cmd.copy :: [FAIL]
clojure.lang.ExceptionInfo: ERROR Set up h2 source database and run migrations...: Unable to connect to Metabase h2 DB. {}
at metabase.cmd.copy$do_step$fn__81848.invoke(copy.clj:67)
at metabase.cmd.copy$do_step.invokeStatic(copy.clj:63)
at metabase.cmd.copy$do_step.invoke(copy.clj:61)
at metabase.cmd.copy$fn__82002$copy_BANG___82007$fn__82008.invoke(copy.clj:338)
at metabase.cmd.copy$fn__82002$copy_BANG___82007.invoke(copy.clj:331)
at metabase.cmd.load_from_h2$load_from_h2_BANG_.invokeStatic(load_from_h2.clj:35)
at metabase.cmd.load_from_h2$load_from_h2_BANG_.invoke(load_from_h2.clj:25)
at clojure.lang.Var.invoke(Var.java:384)
at metabase.cmd$load_from_h2.invokeStatic(cmd.clj:45)
at metabase.cmd$load_from_h2.invoke(cmd.clj:39)
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__82799.invoke(cmd.clj:227)
at metabase.cmd$run_cmd.invokeStatic(cmd.clj:227)
at metabase.cmd$run_cmd.invoke(cmd.clj:218)
at clojure.lang.Var.invoke(Var.java:388)
at metabase.core$run_cmd.invokeStatic(core.clj:160)
at metabase.core$run_cmd.invoke(core.clj:158)
at metabase.core$_main.invokeStatic(core.clj:182)
at metabase.core$_main.doInvoke(core.clj:177)
at clojure.lang.RestFn.applyTo(RestFn.java:137)
at metabase.core.main(Unknown Source)
Caused by: clojure.lang.ExceptionInfo: Unable to connect to Metabase h2 DB. {}
at metabase.db.setup$fn__35456$verify_db_connection__35461$fn__35462$fn__35463.invoke(setup.clj:99)
at metabase.db.setup$fn__35456$verify_db_connection__35461$fn__35462.invoke(setup.clj:97)
at metabase.db.setup$fn__35456$verify_db_connection__35461.invoke(setup.clj:89)
at metabase.db.setup$fn__35538$setup_db_BANG___35543$fn__35544$fn__35547$fn__35548.invoke(setup.clj:144)
at metabase.util$do_with_us_locale.invokeStatic(util.clj:716)
at metabase.util$do_with_us_locale.invoke(util.clj:702)
at metabase.db.setup$fn__35538$setup_db_BANG___35543$fn__35544$fn__35547.invoke(setup.clj:143)
at metabase.db.setup$fn__35538$setup_db_BANG___35543$fn__35544.invoke(setup.clj:142)
at metabase.db.setup$fn__35538$setup_db_BANG___35543.invoke(setup.clj:136)
at metabase.cmd.copy$fn__82002$copy_BANG___82007$fn__82008$fn__82009.invoke(copy.clj:339)
at metabase.cmd.copy$do_step$fn__81848.invoke(copy.clj:64)
... 23 more
Caused by: org.h2.jdbc.JdbcSQLException: Database "/home/ubuntu/metasave/metabase.db" not found [90013-197]
at org.h2.message.DbException.getJdbcSQLException(DbException.java:357)
at org.h2.message.DbException.get(DbException.java:179)
at org.h2.message.DbException.get(DbException.java:155)
at org.h2.engine.Engine.openSession(Engine.java:64)
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(DriverManager.java:681)
at java.sql/java.sql.DriverManager.getConnection(DriverManager.java:252)
at metabase.db.data_source.DataSource.getConnection(data_source.clj:26)
at clojure.java.jdbc$get_connection.invokeStatic(jdbc.clj:372)
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:266)
at metabase.driver.sql_jdbc.connection$can_connect_with_spec_QMARK_.invoke(connection.clj:263)
at metabase.db.setup$fn__35456$verify_db_connection__35461$fn__35462$fn__35463.invoke(setup.clj:97)
... 33 more
Command failed with exception: ERROR Set up h2 source database and run migrations...: Unable to connect to Metabase h2 DB.
java -jar metabase.jar load-from-h2 metabase.db
My folder structure :
Version V0.44.1 work perfectly fine.
So I'm basicly having two issues :
On V0.46.6.1 I can't update my H2 V1 databse due to permission issue
When running migration command following the documentation, I can't connect to my H2 databse
Thanks in advance for your help !