Migrationen

database/schema.sql und database/schema.mysql.sql beschreiben immer den neuesten Stand. Version 1 (basis-v2.2)
ist dieser Stand bei Einführung des Migrators (src/Storage/Migrator.php). Jede spätere Änderung:

  1. schema.sql und schema.mysql.sql auf den neuen Stand bringen (frische Installationen lesen nur diese).
  2. Eine Datei je Treiber anlegen: NNNN_name.sqlite.sql und NNNN_name.mysql.sql, fortlaufend ab 0002.
    Sie läuft auf bestehenden DBs genau einmal, vor dem Angleichen, sieht also noch den alten Stand.
    Sie muss idempotent sein (IF NOT EXISTS, UPDATE … WHERE), weil sie auf DBs aus Zwischenständen treffen kann.
  3. tests/test_migrate.sh laufen lassen: migriert muss gleich frisch angelegt sein, sonst rollt migrate zurĂźck.

Unter SQLite gleicht migrate Tabellen zusätzlich selbst an das Soll an (Umbau mit Sicherung). Reine Strukturänderungen
brauchen dort oft keine Datei. Datenumformungen schon. Unter MySQL/MariaDB gibt es kein automatisches Angleichen.