Manual:SQL-Patch-Datei
Diese Seite ist veraltet. Es wird für Archivzwecke beibehalten. Es kann Erweiterungen oder Funktionen dokumentieren, die veraltet und/oder nicht mehr unterstützt sind. Verlass dich nicht darauf, dass die Informationen hier aktuell sind. |
Es ist möglich, entweder eine SQL-Datei entweder für eine Schemaänderung im Core (siehe Development_policy#Database_patches, Handbuch:DatabaseUpdater.php ) oder für eine Erweiterung (siehe Manual:Hooks/LoadExtensionSchemaUpdates ) zu schreiben. Siehe auch die allgemeinen Richtlinien zur Datenbankkodierung.
Beispiel
Eine SQL-Datei zum Erstellen einer Tabelle könnte etwa so aussehen:
CREATE TABLE /*_*/foo_bar(
-- Primary key
fb_id int unsigned NOT NULL PRIMARY KEY AUTO_INCREMENT,
-- user.user_id of the user who foobared the wiki
fb_user int unsigned NOT NULL,
-- user.user_text of the user who foobared the wiki
fb_user_text varchar(255),
-- Timestamp of when the wiki was foobared
fb_timestamp varbinary(14) NOT NULL default NULL ''
)/*$wgDBTableOptions*/;
CREATE INDEX /*i*/fb_user ON /*_*/foo_bar (fb_user);
CREATE INDEX /*i*/fb_user_text ON /*_*/foo_bar (fb_user_text);
Ersetzen von Variablen
Die ersten beiden müssen, wie im obigen Beispiel, in Patch-Dateien verwendet werden.
/*_*/
wird durch $wgDBprefix ersetzt/*i*/
wird zur Identifizierung von Indizes verwendet, so dass ihr Name über das Index-Alias-System geändert werden kann. (Dies wurde immer nur für eine kleine Anzahl von Kerntabellen verwendet und ist in MediaWiki 1.35 entfernt worden, so dass dies in der Praxis keinen Unterschied macht.)/*$wgDBTableOptions*/
wird durch den Wert von $wgDBTableOptions ersetzt./*$wgDBTableOptions*/
wird nur für MySQL Datenbank-Backends verwendet.
Es gibt andere Variablenersetzungen, aber sie werden in der Praxis nicht verwendet. Die vollständige Liste findet sich in der Dokumentation von Database::replaceVars().
Externe Verweise
- MySQL dev docs, CREATE TABLE
- MySQL dev docs, ALTER TABLE - Zum Hinzufügen, Ändern, Löschen von Spalten