Changelog.SQL  v1.2

Changelog.SQL is simple tool to maintain changes in database. It is based on directory of SQL scripts and simple SQL table where are recorded already executed scripts.

This package contains a library meant to be integrated into your project. Just initialize whatever framework you use and call Smalldb::ChangelogSql::CliMain::main()`.

See cascade plugin changelog_sql for usage example.


When database is modified, place SQL script which performs this modification into app/database/changelog.sql directory and commit it. This script will remain there forever.

After deploy on a server run your changelog-sql script and you will see SQL code required to reproduce all changes on the server.

You must set your client to stop on errors. Otherwise things go bad.
The Trick: Each file has simple insert at its end. This insert records successful execution of given script into database. Filename specified in this insert must match filename of the script.

Example of the Script

1 ALTER ... whatever you need;
2 UPDATE ... data that needs to be modified;
4 --
5 INSERT INTO `about_changelog`
6 SET `filename` = '0000-00-00-about_changelog.sql';
Do not forget final semicolon (;).

Init scripts

In app/database/changelog.sql/init directory can be placed scripts which should be executed every time something is changed in database.


The most of the code is published under Apache 2.0 license. See LICENSE file for details.

Contribution guidelines

There is no bug tracker yet, so send me an e-mail and we will figure it out.

If you wish to send me a patch, please create a Git pull request or send a Git formatted patch via email.