# Database migration [Detailed information about this](http://ian-shafer.github.io/2016/02/02/db-migrations/) ## Setup #### Configuration All configuration needed is done in .configuration.sh. To avoid having to enter password for selected user on each run, just use a [.pgpass](http://www.postgresql.org/docs/9.3/static/libpq-pgpass.html) file. #### Migration files The files in the /migrations directory are changes to the scheme, not the full scheme. The naming convention for migration files are: - 000.000.sql - 000.001.sql - 000.002.sql - 000.003.sql - 000.004.sql - ...and so on **Example** The first file, `migration/000.000` may look like this: ``` create table users ( name varchar(32) not null, primary key (name) ); ``` The second file, `migration/000.001` may look like this: ``` alter table users add email varchar(256) not null; ``` #### Prerequisites One table needs to be created for the database to make this work: ``` CREATE TABLE database_versions ( version varchar(32) not null, is_active boolean not null default false, creation_date timestamp not null default current_timestamp ); ``` To do the actual migration, then just run: ``` # ./db-upgrade ```