Agile way to manage your database releases., (*1)
Why
In the agile world you have to deploy quickly the new implementations of the software.
Tracking and managing the changes of the database is difficult and boring.
MToolkit - Evolution tries to make this task easy.
We have been inspired by Play Framework: https://www.playframework.com/documentation/2.0/Evolutions
You can track the database evolutions in your project (in a dedicated folder) and you can apply them for the release., (*2)
How to use
In your project, create one or more (one per each environment) .ini file like this:, (*3)
username = root
password = passwd
host = 127.0.0.1
type = mysql
dbname = mevolution_test
This file will be used to connect to the database where you apply or revert the evolutions., (*4)
In a folder put the evolutions files. The names of the files must be 1.sql, 2.sql, etc.
The content of the files must be like this:, (*5)
-- UP
CREATE TABLE test01
(
id INT,
field01 VARCHAR(255),
field02 VARCHAR(255),
start_date DATE,
end_date DATE,
PRIMARY KEY
(
id,
field01,
start_date
)
);
-- DOWN
DROP TABLE test01;
UP and DOWN placeholders are mandatory.
The UP queries will execute when you apply the evolutions.
The DOWN queries will execute when you revert the evolutions., (*6)
Init
To initializate the database and before applying new evolutions, run the command:, (*7)
php mevolution.phar init -s=path_to_the_ini_file -e=path_of_the_evolutions_folder
Apply evolutions
To apply the evolutions run:, (*8)
php mevolution.phar apply -s=path_to_the_ini_file -e=path_of_the_evolutions_folder
Revert evolutions
To revert the evolutions run:, (*9)
php mevolution.phar revert -s=path_to_the_ini_file -e=path_of_the_evolutions_folder
To revert to a specific evolution use "-to=" argument:, (*10)
php mevolution.phar revert -s=path_to_the_ini_file -e=path_of_the_evolutions_folder -to=1
The "down" query "1" will be executed., (*11)
Create PHAR executable
MToolkit Evolution uses box-project to create the PHAR file., (*12)
To create the PHAR executable, run the following command in the root of the project:, (*13)
php box.phar build -c manifest.json
Not supported
- Using DELIMITER in the evolutions file.