手册:SQL补丁文件

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

您可以为核心中的模式更改(参见发展政策#数据库补丁手册:DatabaseUpdater.php )或扩展(参见Manual:Hooks/LoadExtensionSchemaUpdates )编写一个SQL文件。 另见一般数据库编码约定

示例

用于创建表的SQL文件可能如下所示:

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);

变量替换

前两个需要在补丁文件中使用,如上例所示。

  • /*_*/将替换为$wgDBprefix
  • /*i*/用于标识索引,因此可以通过索引别名系统更改其名称。 (这只用于一小部分核心表,并且在MediaWiki 1.35中已被删除,因此在实践中这不会有任何影响。)
  • /*$wgDBTableOptions*/将替换值为$wgDBTableOptions
  • /*$wgDBTableOptions*/仅用于MySQL 数据库后端。

还有其他变量替换,但它们在实践中并未使用。 有关完整列表,请参阅Database::replaceVars()的文档。

外部链接