smalldb/libchangelog_sql

This package is not installable via Composer 1.x, please make sure you upgrade to Composer 2+. Read more about our Composer 1.x deprecation policy.

Changelog.SQL is simple and elegant tool to maintain database changes. This package is a library meant to be integrated into your project

v1.2 2016-06-17 20:14 UTC

This package is auto-updated.

Last update: 2021-11-21 13:51:49 UTC


README

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.

Usage

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.

@warning You must set your client to stop on errors. Otherwise things go bad.

@note 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

ALTER ... whatever you need;
UPDATE ... data that needs to be modified;

--
INSERT INTO `about_changelog`
SET `filename` = '0000-00-00-about_changelog.sql';

@warning 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.

License

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.