H2: datomic.h2.db vs. datomic.mv.db


first of all, thanks a lot for making Datomic free :partying_face:

I’m currently adapting our development environment to the newest version 1.0.6735, while coming from the paid version 1.0.6527.

I noticed that the newest version still uses H2 as storage backend, but it creates a db/datomic.mv.db file instead of a db/datomic.h2.db.

As far as I understand the db/datomic.mv.db file is using the newer MVStore storage type of H2.

I tried to append the following to the Datomic db URI:


like recommended here, but it still uses db/datomic.mv.db file.

For my development environment it is okay to start with an empty db again. However, other Datomic installations which really use H2 might get into trouble due to this.

Best regards,


Hi @maxweber ,

Great to hear from you! With the release of Datomic 1.0.6644 H2 used for Dev DBs was upgraded from H2 1.x to 2.1.214. It is expected that “old” DBs made with 1.x are not compatible with 2.1.214. While I do understand that Dev protocol is a popular usage for Datomic it is not intended for production use. That being said, you can still move your old DB to the new version by utilizing Datomic’s Backup/Restore.

Steps would look like:

  1. Backup your pre 6644 dev DB.
  2. Restore onto 6735 version of Dev DB.



Hi Jaret,

Thanks a lot for your answer. Great to hear from you :slight_smile: Ok cool, that no production setup will be affected. It was just a bit confusing for me during the upgrade. First I used the new peer library in combination with an old transactor (in the dev environment), and it could not read the transactor location from storage. In the context of the H2 upgrade, this error now makes sense to me. The connection worked as soon as I used a new transactor, but the db was empty, and it took me a while to figure out what happened. Maybe someone else will find this forum entry helpful when he/she takes the same upgrade path as I did.

Best regards and a great day,