55 lines
1.2 KiB
Markdown
55 lines
1.2 KiB
Markdown
# 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.
|
|
Note that a
|
|
[.pgpass](http://www.postgresql.org/docs/9.3/static/libpq-pgpass.html) file will
|
|
do most of the times as well and therefore configuration is not mandatory.
|
|
|
|
#### 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
|
|
- 000.001
|
|
- 000.002
|
|
- 000.003
|
|
- 000.004
|
|
- ...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
|
|
```
|