Upgrades und die SQL-Update-Dateien
Diese Seite richtet sich an Datenbankadministratoren, die den Datenbankteil eines Exponential-Upgrades anwenden. Sie beantwortet: wo die Update-Dateien liegen, welche eine Datenbank braucht, die Regeln für ihre Anwendung, welche Verzeichnisse nie angewendet werden dürfen und wie Sie erkennen, auf welcher Version eine Datenbank steht. Das Kapitel Schritt für Schritt ist Kapitel 11, Aktualisieren; die Anleitung für Administratoren ist Aktualisieren.
Inhalt
- Auf welcher Version steht die Datenbank?
- Wo die Update-Dateien liegen
- Die Kette
- Regeln
- Verzeichnisse, die Sie nicht anwenden dürfen
- Hinweise je Engine
- Die Update-Dateien selbst prüfen
- Checkliste
Auf welcher Version steht die Datenbank?
Der Code und die Datenbank tragen jeweils eine Version; nach einem korrekten Upgrade stimmen sie überein.
php bin/php/console --version
mysql -u USER -p DATABASE -e "SELECT name, value FROM ezsite_data WHERE name LIKE 'ezpublish-%';"
psql -U USER DATABASE -c "SELECT name, value FROM ezsite_data WHERE name LIKE 'ezpublish-%';"
sqlite3 var/storage/sqlite3/exponential.db "SELECT name, value FROM ezsite_data WHERE name LIKE 'ezpublish-%';"Eine aktuelle Website gibt ezpublish-version 6.0.15stable und ezpublish-release 1 aus. Die Zeilennamen behalten ihre
historische Schreibweise mit Absicht: Sie sind Bezeichner, in die jede Update-Datei schreibt. Setup > Systeminformationen
zeigt ebenfalls beide Versionen (11.2).
Wo die Update-Dateien liegen
| Engine | Verzeichnis | Schritte |
|---|---|---|
| MySQL, MariaDB | update/database/mysql/ | 3.10 auf 4.0 ... 5.4, dann 6.0/dbupdate-5.4.0-6.0.0.sql, dann 6.0/dbupdate-6.0.0-6.0.15.sql |
| PostgreSQL | update/database/postgresql/ | dieselbe Kette; der Schritt 5.4 ist 6.0/dbupdate-5.4-to-6.0.sql, dann 6.0/dbupdate-6.0.0-6.0.15.sql |
| SQLite | update/database/sqlite/ | nur 6.0/dbupdate-6.0.0-6.0.15.sql (die SQLite-Unterstützung beginnt mit 6.0.1) |
| Oracle | extension/ezoracle/update/database/ | ezpublish/ für die Kernel-Kette bis 5.3, ezoracle/ für die eigenen Tabellen des Treibers |
| MongoDB | keines | die Audit-Collections von 6.0.15 kommen aus createaudittables.php |
Die Kette
Jede Datei bringt eine Datenbank von einer Version auf die nächste. Eine Datenbank durchläuft die Kette der Reihe nach, jede Datei einmal:
| Sie betreiben | Weg |
|---|---|
| 3.10 bis 5.3 | die alte Kette bis 5.4, dann auf 6.0.0, dann auf 6.0.15 |
| 5.4.0 oder 5.90 | auf 6.0.0, dann auf 6.0.15 |
| 6.0.0 bis 6.0.14 | dbupdate-6.0.0-6.0.15.sql |
Die vollständige Tabelle der Dateien von 4.0 bis 5.4 steht in 11.3. Wenden Sie eine Datei mit dem Client der Datenbank an:
mysql -u USER -p DATABASE < update/database/mysql/6.0/dbupdate-6.0.0-6.0.15.sql
psql -U USER -d DATABASE -f update/database/postgresql/6.0/dbupdate-6.0.0-6.0.15.sql
sqlite3 var/storage/sqlite3/exponential.db < update/database/sqlite/6.0/dbupdate-6.0.0-6.0.15.sqlRegeln
- Zuerst sichern und wissen, wie Sie wiederherstellen (Eine Datenbank wiederherstellen).
- Der Reihe nach, jede einmal. Eine Anweisung, die scheitert, weil eine Spalte oder Tabelle schon existiert, bedeutet, dass die Datei schon einmal angewendet wurde: Halten Sie an und vergleichen Sie mit der Sicherung.
- Eine Datei, die mittendrin scheitert: Stellen Sie die Sicherung wieder her und wenden Sie die Datei von vorn an; reparieren Sie nicht von Hand.
- Cluster-Dateien: Verwendet die Installation den DFS-Cluster, wenden Sie auch die Datei
dbupdate-cluster-...desselben Schritts an (MySQL: 4.3, 4.7, 5.2, 5.4). unstable/-Verzeichnisse enthalten Dateien von Vorabversionen; wenden Sie sie nie auf eine Website an, die ein finales Release betrieben hat.- Je Engine: Eine Website, die auf eine andere Engine umgezogen ist, verwendet die Update-Dateien der Engine, auf der sie jetzt läuft.
Verzeichnisse, die Sie nicht anwenden dürfen
update/database/<engine>/6.12/, 7.2/ und 7.3/ stammen aus dem Upstream-Legacy-Kernel von 2016 bis 2018, nummeriert nach
einer Version eines Symfony-Kernels, nicht nach einem Legacy-Release. Als Dateien angewendet, würde jede die Versionszeile durch
eine Zahl ersetzen, die keine Exponential-Version ist. Ihre Änderungen (das breitere ezuser.password_hash,
ezcontentobject_trash.trashed und auf PostgreSQL die Sequenznamen <table>_<column>_seq) stecken bereits in den Dateien 6.0
(11.3).
Hinweise je Engine
| Engine | Hinweis |
|---|---|
| MySQL, MariaDB | Dateien beginnen mit SET default_storage_engine=InnoDB;. Kopien von vor Oktober 2026 enthielten SET storage_engine=InnoDB;, entfernt in MySQL 5.7.5 und MariaDB 12.0: Nehmen Sie die aktuellen Dateien. Tabellen müssen UTF-8 und InnoDB sein (MySQL und MariaDB: utf8mb4). |
| PostgreSQL | Abgesicherte Schritte sind DO-Blöcke (PostgreSQL 9.0+); digest() aus pgcrypto muss existieren. |
| SQLite | Jedes ALTER TABLE fügt eine Spalte hinzu, und SQLite hat kein ADD COLUMN IF NOT EXISTS: Ein zweiter Lauf scheitert mit "duplicate column name". Führen Sie die Datei einmal aus, nach einer Online-Sicherung. |
| Oracle | Die eigenen Dateien der Erweiterung bis 5.3; die Audit-Tabellen von 6.0.15 aus createaudittables.php. |
| MongoDB | Kein SQL; die Upgrade-Prüfung gibt die mongosh-Befehle für fehlende Collections aus. |
Die Update-Dateien selbst prüfen
php bin/php/console exp:checkdbfiles --no-verify-branchesEs prüft die Update-Dateien gegen den Upgrade-Weg, jedes Verzeichnis von 4.0 bis 7.3 auf jeder Engine, und gibt je Problem
eine Zeile aus: ! für eine fehlende Datei, ? für eine überzählige. Keine Ausgabe bedeutet, dass die Dateien vollständig
sind. Ohne --no-verify-branches versucht es außerdem ein stillgelegtes SVN-Repository und gibt eine Zeile C aus;
ignorieren Sie sie oder fügen Sie die Option hinzu.
Checkliste
- To do: Versionszeile vorher und nachher gelesen.
- To do: Sicherung erstellt und Wiederherstellung bekannt.
- To do: Nur die Dateien Ihrer Engine und Ihres Weges, der Reihe nach, jede einmal.
- To do: Keine Datei aus
6.12/,7.2/,7.3/oderunstable/angewendet. - To do: Cluster-Dateien angewendet, wo der Cluster verwendet wird.
- To do:
exp:checkdbfilesgibt nichts aus.
Verwandte Seiten
- Das Datenbank-Update auf 6.0.15 anwenden
- Das Schema nach einem Upgrade prüfen
- Kunden-Websites aktualisieren (für Hosting-Unternehmen)
- Migrationen, Umstieg von SQL-Update-Dateien, Hinweise zu den Datenbanken für Migrationen
- Freie Dokumentation: Diese Seite darf unter der GNU FDL 1.3 frei kopiert, übersetzt und verbessert werden.
Werden Sie Exponential-Partner
Partner teilen ihre Informationen, stellen Mittel bereit, geben Beiträge zurück und entwickeln die Produkte mit uns, und so wächst Exponential. Eine Partner-Website und ein Dashboard sind für Mitte 2027 geplant: Werden Sie noch heute Partner, damit wir schneller wachsen und neue Funktionen früher liefern.