Integrate your data into your control version system. Finally!
PHP Shell Other
Switch branches/tags
Nothing to show
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Failed to load latest commit information.

MirenDB - Control version system for your database.

MirenDB is born as a tool to help developers to integrate their project's databases - not just schema, but data, too - into their control version system.

This may be specially useful for CMS like Wordpress, Drupal, Magento, etc. where the projects status is always defined by its data.

Any project can take advantage of MirenDB, anyway. Even if you don't need your data to be under CVS, just your schema, MirenDB helps you forget about generating the migration scripts but it does it automatically. You can even integrate it with FlyWayDB, DBV or Laravel migrations.

Current Status

The current status of the project is not stable at all, we're currently developing it.

To check a rough roadmap please go to

Important features like Importing revisions, adding a pull hook, handling multiple developers and merges, are still missing. Please feel free to contribute.

How to use it

Please check MirenDB Client as an example of how to install the tool on any project.

The main way to install it is by using Composer.

Please copy into your project this composer.json - or integrate it in your existing one -

  "name": "ojoven/mirendb_client",
  "repositories": [
      "type": "vcs",
      "url": ""
  "require": {
    "ojoven/mirendb": "dev-master"
  "scripts": {
    "post-install-cmd": "php vendor/ojoven/mirendb/scripts/post-install-cmd.php"

And run:

composer install

You should get something like this: Composer

Now you must configure your project's features - DB credentials, etc. - on .sql/App/config.ini or better, run the configuration assistant:

php .sql/scripts/configurator.php

A configurator will ask you in a human way your credentials and preferences: MirenDB Configurator


The intent of MirenDB is to integrate in your workflow in the most stealthy way as possible. We've already succeeded on integrating it with GIT, by installing a pre-commit and a post-merge hook.

So, once the hooks are installed - automatically if you run the configurator - everytime you run:

git commit -m "Whatever"

MirenDB checks the differences between the already stored revisions and the current DB and it generates a new revision in case they're different.

MirenDB revision

At the same time, if you run:

git pull --all

MirenDB imports the revisions into your database, so it updates it in case another developer had updated on his local environment.


We're using MySqliDB class as a wrapper for MySQL connection handling:


Please let me know your thoughts and feedback at or write me an email to