Manual:SQL-Patch-Datei

This page is a translated version of the page Manual:SQL patch file and the translation is 100% complete.

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