49 lines
1.5 KiB
ReStructuredText
49 lines
1.5 KiB
ReStructuredText
|
Upgrade a database
|
||
|
==================
|
||
|
|
||
|
|
||
|
Database schema migration are handled in two ways:
|
||
|
|
||
|
* New tables
|
||
|
|
||
|
For this we simply rely on the ``createdb`` script used when creating the
|
||
|
database the first time.
|
||
|
|
||
|
* Changes to existing tables
|
||
|
|
||
|
For changes to existing tables, we rely on `Alembic <http://alembic.readthedocs.org/>`_.
|
||
|
This allows us to do upgrade and downgrade of schema migration, kind of like
|
||
|
one would do commits in a system like git.
|
||
|
|
||
|
To upgrade the database to the latest version simply run:
|
||
|
::
|
||
|
|
||
|
alembic upgrade head
|
||
|
|
||
|
This may fail for different reasons:
|
||
|
|
||
|
* The change was already made in the database
|
||
|
|
||
|
This can be because the version of the database schema saved is incorrect.
|
||
|
It can be debugged using the following commands:
|
||
|
|
||
|
* Find the current revision: ``alembic current``
|
||
|
* See the entire history: ``alembic history``
|
||
|
|
||
|
Once the revision at which your database should be is found (in the history)
|
||
|
you can declare that your database is at this given revision using:
|
||
|
``alembic stamp <revision id>``.
|
||
|
|
||
|
Eventually, if you do not know where your database is or should be, you can
|
||
|
do an iterative process stamping the database for every revision, one by one
|
||
|
trying everytime to ``alembic upgrade`` until it works.
|
||
|
|
||
|
* The database used does not support some of the changes
|
||
|
|
||
|
SQLite is handy for development but does not support all the features of a
|
||
|
real database server. Upgrading a SQLite database might therefore not work,
|
||
|
depending on the changes done.
|
||
|
|
||
|
In some cases, if you are using a SQLite database, you will have to destroy
|
||
|
it and create a new one.
|