summaryrefslogtreecommitdiff
path: root/releasenotes/notes/switch-to-alembic-1fa5248f0ce824ae.yaml
blob: 833837dcba9a0877581da07ec2f9e75c447b8eba (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
---
upgrade:
  - |
    The database migration engine has changed from `sqlalchemy-migrate`__ to
    `alembic`__. For most deployments, this should have minimal to no impact
    and the switch should be mostly transparent. The main user-facing impact is
    the change in schema versioning. While sqlalchemy-migrate used a linear,
    integer-based versioning scheme, which required placeholder migrations to
    allow for potential migration backports, alembic uses a distributed version
    control-like schema where a migration's ancestor is encoded in the file and
    branches are possible. The alembic migration files therefore use a
    arbitrary UUID-like naming scheme and the ``keystone-manage db_version``
    command returns such a version.

    When the ``keystone-manage db_sync`` command is run without options or
    with the ``--expand`` or ``--contract`` options, all remaining
    sqlalchemy-migrate-based migrations will be automatically applied.

    Data migrations are now included in the expand phase and the ``--migrate``
    option is now a no-op. It may be removed in a future release.

    .. __: https://sqlalchemy-migrate.readthedocs.io/en/latest/
    .. __: https://alembic.sqlalchemy.org/en/latest/