Template:SchemaDiagram/sql/mediawiki-1.36.0.txt
-- maintenance/tables.sql -- SQL to create the initial tables for the MediaWiki database. -- This is read and executed by the install script; you should -- not have to run it by itself unless doing a manual install.
-- This is a shared schema file used for both MySQL and SQLite installs. -- -- For more documentation on the database schema, see -- https://www.mediawiki.org/wiki/Manual:Database_layout -- -- General notes: -- -- If possible, create tables as InnoDB to benefit from the -- superior resiliency against crashes and ability to read -- during writes (and write during reads!) -- -- Only the 'searchindex' table requires MyISAM due to the -- requirement for fulltext index support, which is missing -- from InnoDB. -- -- -- The MySQL table backend for MediaWiki currently uses -- 14-character BINARY or VARBINARY fields to store timestamps. -- The format is YYYYMMDDHHMMSS, which is derived from the -- text format of MySQL's TIMESTAMP fields. -- -- Historically TIMESTAMP fields were used, but abandoned -- in early 2002 after a lot of trouble with the fields -- auto-updating. -- -- The Postgres backend uses TIMESTAMPTZ fields for timestamps, -- and we will migrate the MySQL definitions at some point as -- well. -- -- -- The /*_*/ comments in this and other files are -- replaced with the defined table prefix by the installer -- and updater scripts. If you are installing or running -- updates manually, you will need to manually insert the -- table prefix if any when running these scripts. --
--
-- The user table contains basic account information,
-- authentication keys, etc.
--
-- Some multi-wiki sites may share a single central user table
-- between separate wikis using the $wgSharedDB setting.
--
-- Note that when an external authentication plugin is used,
-- user table entries still need to be created to store
-- preferences and to key tracking information in the other
-- tables.
--
CREATE TABLE /*_*/user (
user_id int unsigned NOT NULL PRIMARY KEY AUTO_INCREMENT,
-- Usernames must be unique, must not be in the form of -- an IP address. _Shouldn't_ allow slashes or case -- conflicts. Spaces are allowed, and are _not_ converted -- to underscores like titles. See the User::newFromName() for -- the specific tests that usernames have to pass. user_name varbinary(255) NOT NULL default ,
-- Optional 'real name' to be displayed in credit listings user_real_name varbinary(255) NOT NULL default ,
-- Password hashes, see User::crypt() and User::comparePasswords() -- in User.php for the algorithm user_password tinyblob NOT NULL,
-- When using 'mail me a new password', a random -- password is generated and the hash stored here. -- The previous password is left in place until -- someone actually logs in with the new password, -- at which point the hash is moved to user_password -- and the old password is invalidated. user_newpassword tinyblob NOT NULL,
-- Timestamp of the last time when a new password was -- sent, for throttling and expiring purposes -- Emailed passwords will expire $wgNewPasswordExpiry -- (a week) after being set. If user_newpass_time is NULL -- (eg. created by mail) it doesn't expire. user_newpass_time binary(14),
-- Note: email should be restricted, not public info. -- Same with passwords. user_email tinytext NOT NULL,
-- If the browser sends an If-Modified-Since header, a 304 response is -- suppressed if the value in this field for the current user is later than -- the value in the IMS header. That is, this field is an invalidation timestamp -- for the browser cache of logged-in users. Among other things, it is used -- to prevent pages generated for a previously logged in user from being -- displayed after a session expiry followed by a fresh login. user_touched binary(14) NOT NULL,
-- A pseudorandomly generated value that is stored in -- a cookie when the "remember password" feature is -- used (previously, a hash of the password was used, but -- this was vulnerable to cookie-stealing attacks) user_token binary(32) NOT NULL default ,
-- Initially NULL; when a user's e-mail address has been -- validated by returning with a mailed token, this is -- set to the current timestamp. user_email_authenticated binary(14),
-- Randomly generated token created when the e-mail address -- is set and a confirmation test mail sent. user_email_token binary(32),
-- Expiration date for the user_email_token user_email_token_expires binary(14),
-- Timestamp of account registration. -- Accounts predating this schema addition may contain NULL. user_registration binary(14),
-- Count of edits and edit-like actions. -- -- *NOT* intended to be an accurate copy of COUNT(*) WHERE rev_actor refers to a user's actor_id -- May contain NULL for old accounts if batch-update scripts haven't been -- run, as well as listing deleted edits and other myriad ways it could be -- out of sync. -- -- Meant primarily for heuristic checks to give an impression of whether -- the account has been used much. -- user_editcount int,
-- Expiration date for user password. user_password_expires varbinary(14) DEFAULT NULL
) /*$wgDBTableOptions*/;
CREATE UNIQUE INDEX /*i*/user_name ON /*_*/user (user_name); CREATE INDEX /*i*/user_email_token ON /*_*/user (user_email_token); CREATE INDEX /*i*/user_email ON /*_*/user (user_email(50));
-- -- Every edit of a page creates also a revision row. -- This stores metadata about the revision, and a reference -- to the text storage backend. -- CREATE TABLE /*_*/revision (
-- Unique ID to identify each revision rev_id int unsigned NOT NULL PRIMARY KEY AUTO_INCREMENT,
-- Key to page_id. This should _never_ be invalid. rev_page int unsigned NOT NULL,
-- Key to comment.comment_id. Comment summarizing the change. rev_comment_id bigint unsigned NOT NULL default 0,
-- Key to actor.actor_id of the user or IP who made this edit. rev_actor bigint unsigned NOT NULL default 0,
-- Timestamp of when revision was created rev_timestamp binary(14) NOT NULL default ,
-- Records whether the user marked the 'minor edit' checkbox. -- Many automated edits are marked as minor. rev_minor_edit tinyint unsigned NOT NULL default 0,
-- Restrictions on who can access this revision rev_deleted tinyint unsigned NOT NULL default 0,
-- Length of this revision in bytes rev_len int unsigned,
-- Key to revision.rev_id -- This field is used to add support for a tree structure (The Adjacency List Model) rev_parent_id int unsigned default NULL,
-- SHA-1 text content hash in base-36 rev_sha1 varbinary(32) NOT NULL default
) /*$wgDBTableOptions*/ MAX_ROWS=10000000 AVG_ROW_LENGTH=1024; -- In case tables are created as MyISAM, use row hints for MySQL <5.0 to avoid 4GB limit
-- The index is proposed for removal, do not use it in new code: T163532. -- Used for ordering revisions within a page by rev_id, which is usually -- incorrect, since rev_timestamp is normally the correct order. It can also -- be used by dumpBackup.php, if a page and rev_id range is specified. CREATE INDEX /*i*/rev_page_id ON /*_*/revision (rev_page, rev_id);
-- Used by ApiQueryAllRevisions CREATE INDEX /*i*/rev_timestamp ON /*_*/revision (rev_timestamp);
-- History index CREATE INDEX /*i*/page_timestamp ON /*_*/revision (rev_page,rev_timestamp);
-- User contributions index CREATE INDEX /*i*/rev_actor_timestamp ON /*_*/revision (rev_actor,rev_timestamp,rev_id);
-- Credits index. This is scanned in order to compile credits lists for pages, -- in ApiQueryContributors. Also for ApiQueryRevisions if rvuser is specified. CREATE INDEX /*i*/rev_page_actor_timestamp ON /*_*/revision (rev_page,rev_actor,rev_timestamp);
--
-- When using the default MySQL search backend, page titles
-- and text are munged to strip markup, do Unicode case folding,
-- and prepare the result for MySQL's fulltext index.
--
-- This table must be MyISAM; InnoDB does not support the needed
-- fulltext index.
--
CREATE TABLE /*_*/searchindex (
-- Key to page_id si_page int unsigned NOT NULL,
-- Munged version of title si_title varchar(255) NOT NULL default ,
-- Munged version of body text si_text mediumtext NOT NULL
) ENGINE=MyISAM DEFAULT CHARSET=utf8;
CREATE UNIQUE INDEX /*i*/si_page ON /*_*/searchindex (si_page); CREATE FULLTEXT INDEX /*i*/si_title ON /*_*/searchindex (si_title); CREATE FULLTEXT INDEX /*i*/si_text ON /*_*/searchindex (si_text);
-- vim: sw=2 sts=2 et
-- maintenance/tables-generated.sql -- This file is automatically generated using maintenance/generateSchemaSql.php. -- Source: maintenance/tables.json -- Do not modify this file directly. -- See https://www.mediawiki.org/wiki/Manual:Schema_changes CREATE TABLE /*_*/site_identifiers (
si_type VARBINARY(32) NOT NULL, si_key VARBINARY(32) NOT NULL, si_site INT UNSIGNED NOT NULL, INDEX si_site (si_site), INDEX si_key (si_key), PRIMARY KEY(si_type, si_key)
) /*$wgDBTableOptions*/;
CREATE TABLE /*_*/updatelog (
ul_key VARCHAR(255) NOT NULL, ul_value BLOB DEFAULT NULL, PRIMARY KEY(ul_key)
) /*$wgDBTableOptions*/;
CREATE TABLE /*_*/actor (
actor_id BIGINT UNSIGNED AUTO_INCREMENT NOT NULL, actor_user INT UNSIGNED DEFAULT NULL, actor_name VARBINARY(255) NOT NULL, UNIQUE INDEX actor_user (actor_user), UNIQUE INDEX actor_name (actor_name), PRIMARY KEY(actor_id)
) /*$wgDBTableOptions*/;
CREATE TABLE /*_*/user_former_groups (
ufg_user INT UNSIGNED DEFAULT 0 NOT NULL, ufg_group VARBINARY(255) DEFAULT NOT NULL, PRIMARY KEY(ufg_user, ufg_group)
) /*$wgDBTableOptions*/;
CREATE TABLE /*_*/bot_passwords (
bp_user INT UNSIGNED NOT NULL, bp_app_id VARBINARY(32) NOT NULL, bp_password TINYBLOB NOT NULL, bp_token BINARY(32) DEFAULT NOT NULL, bp_restrictions BLOB NOT NULL, bp_grants BLOB NOT NULL, PRIMARY KEY(bp_user, bp_app_id)
) /*$wgDBTableOptions*/;
CREATE TABLE /*_*/comment (
comment_id BIGINT UNSIGNED AUTO_INCREMENT NOT NULL, comment_hash INT NOT NULL, comment_text BLOB NOT NULL, comment_data BLOB DEFAULT NULL, INDEX comment_hash (comment_hash), PRIMARY KEY(comment_id)
) /*$wgDBTableOptions*/;
CREATE TABLE /*_*/slots (
slot_revision_id BIGINT UNSIGNED NOT NULL, slot_role_id SMALLINT UNSIGNED NOT NULL, slot_content_id BIGINT UNSIGNED NOT NULL, slot_origin BIGINT UNSIGNED NOT NULL, INDEX slot_revision_origin_role ( slot_revision_id, slot_origin, slot_role_id ), PRIMARY KEY(slot_revision_id, slot_role_id)
) /*$wgDBTableOptions*/;
CREATE TABLE /*_*/site_stats (
ss_row_id INT UNSIGNED NOT NULL, ss_total_edits BIGINT UNSIGNED DEFAULT NULL, ss_good_articles BIGINT UNSIGNED DEFAULT NULL, ss_total_pages BIGINT UNSIGNED DEFAULT NULL, ss_users BIGINT UNSIGNED DEFAULT NULL, ss_active_users BIGINT UNSIGNED DEFAULT NULL, ss_images BIGINT UNSIGNED DEFAULT NULL, PRIMARY KEY(ss_row_id)
) /*$wgDBTableOptions*/;
CREATE TABLE /*_*/user_properties (
up_user INT UNSIGNED NOT NULL, up_property VARBINARY(255) NOT NULL, up_value BLOB DEFAULT NULL, INDEX up_property (up_property), PRIMARY KEY(up_user, up_property)
) /*$wgDBTableOptions*/;
CREATE TABLE /*_*/log_search (
ls_field VARBINARY(32) NOT NULL, ls_value VARCHAR(255) NOT NULL, ls_log_id INT UNSIGNED DEFAULT 0 NOT NULL, INDEX ls_log_id (ls_log_id), PRIMARY KEY(ls_field, ls_value, ls_log_id)
) /*$wgDBTableOptions*/;
CREATE TABLE /*_*/change_tag (
ct_id INT UNSIGNED AUTO_INCREMENT NOT NULL, ct_rc_id INT UNSIGNED DEFAULT NULL, ct_log_id INT UNSIGNED DEFAULT NULL, ct_rev_id INT UNSIGNED DEFAULT NULL, ct_params BLOB DEFAULT NULL, ct_tag_id INT UNSIGNED NOT NULL, UNIQUE INDEX change_tag_rc_tag_id (ct_rc_id, ct_tag_id), UNIQUE INDEX change_tag_log_tag_id (ct_log_id, ct_tag_id), UNIQUE INDEX change_tag_rev_tag_id (ct_rev_id, ct_tag_id), INDEX change_tag_tag_id_id ( ct_tag_id, ct_rc_id, ct_rev_id, ct_log_id ), PRIMARY KEY(ct_id)
) /*$wgDBTableOptions*/;
CREATE TABLE /*_*/content (
content_id BIGINT UNSIGNED AUTO_INCREMENT NOT NULL, content_size INT UNSIGNED NOT NULL, content_sha1 VARBINARY(32) NOT NULL, content_model SMALLINT UNSIGNED NOT NULL, content_address VARBINARY(255) NOT NULL, PRIMARY KEY(content_id)
) /*$wgDBTableOptions*/;
CREATE TABLE /*_*/l10n_cache (
lc_lang VARBINARY(35) NOT NULL, lc_key VARCHAR(255) NOT NULL, lc_value MEDIUMBLOB NOT NULL, PRIMARY KEY(lc_lang, lc_key)
) /*$wgDBTableOptions*/;
CREATE TABLE /*_*/module_deps (
md_module VARBINARY(255) NOT NULL, md_skin VARBINARY(32) NOT NULL, md_deps MEDIUMBLOB NOT NULL, PRIMARY KEY(md_module, md_skin)
) /*$wgDBTableOptions*/;
CREATE TABLE /*_*/redirect (
rd_from INT UNSIGNED DEFAULT 0 NOT NULL, rd_namespace INT DEFAULT 0 NOT NULL, rd_title VARBINARY(255) DEFAULT NOT NULL, rd_interwiki VARCHAR(32) DEFAULT NULL, rd_fragment VARBINARY(255) DEFAULT NULL, INDEX rd_ns_title (rd_namespace, rd_title, rd_from), PRIMARY KEY(rd_from)
) /*$wgDBTableOptions*/;
CREATE TABLE /*_*/pagelinks (
pl_from INT UNSIGNED DEFAULT 0 NOT NULL, pl_namespace INT DEFAULT 0 NOT NULL, pl_title VARBINARY(255) DEFAULT NOT NULL, pl_from_namespace INT DEFAULT 0 NOT NULL, INDEX pl_namespace (pl_namespace, pl_title, pl_from), INDEX pl_backlinks_namespace ( pl_from_namespace, pl_namespace, pl_title, pl_from ), PRIMARY KEY(pl_from, pl_namespace, pl_title)
) /*$wgDBTableOptions*/;
CREATE TABLE /*_*/templatelinks (
tl_from INT UNSIGNED DEFAULT 0 NOT NULL, tl_namespace INT DEFAULT 0 NOT NULL, tl_title VARBINARY(255) DEFAULT NOT NULL, tl_from_namespace INT DEFAULT 0 NOT NULL, INDEX tl_namespace (tl_namespace, tl_title, tl_from), INDEX tl_backlinks_namespace ( tl_from_namespace, tl_namespace, tl_title, tl_from ), PRIMARY KEY(tl_from, tl_namespace, tl_title)
) /*$wgDBTableOptions*/;
CREATE TABLE /*_*/imagelinks (
il_from INT UNSIGNED DEFAULT 0 NOT NULL, il_to VARBINARY(255) DEFAULT NOT NULL, il_from_namespace INT DEFAULT 0 NOT NULL, INDEX il_to (il_to, il_from), INDEX il_backlinks_namespace ( il_from_namespace, il_to, il_from ), PRIMARY KEY(il_from, il_to)
) /*$wgDBTableOptions*/;
CREATE TABLE /*_*/langlinks (
ll_from INT UNSIGNED DEFAULT 0 NOT NULL, ll_lang VARBINARY(35) DEFAULT NOT NULL, ll_title VARBINARY(255) DEFAULT NOT NULL, INDEX ll_lang (ll_lang, ll_title), PRIMARY KEY(ll_from, ll_lang)
) /*$wgDBTableOptions*/;
CREATE TABLE /*_*/iwlinks (
iwl_from INT UNSIGNED DEFAULT 0 NOT NULL, iwl_prefix VARBINARY(32) DEFAULT NOT NULL, iwl_title VARBINARY(255) DEFAULT NOT NULL, INDEX iwl_prefix_title_from (iwl_prefix, iwl_title, iwl_from), INDEX iwl_prefix_from_title (iwl_prefix, iwl_from, iwl_title), PRIMARY KEY(iwl_from, iwl_prefix, iwl_title)
) /*$wgDBTableOptions*/;
CREATE TABLE /*_*/category (
cat_id INT UNSIGNED AUTO_INCREMENT NOT NULL, cat_title VARBINARY(255) NOT NULL, cat_pages INT DEFAULT 0 NOT NULL, cat_subcats INT DEFAULT 0 NOT NULL, cat_files INT DEFAULT 0 NOT NULL, UNIQUE INDEX cat_title (cat_title), INDEX cat_pages (cat_pages), PRIMARY KEY(cat_id)
) /*$wgDBTableOptions*/;
CREATE TABLE /*_*/watchlist_expiry (
we_item INT UNSIGNED NOT NULL, we_expiry BINARY(14) NOT NULL, INDEX we_expiry (we_expiry), PRIMARY KEY(we_item)
) /*$wgDBTableOptions*/;
CREATE TABLE /*_*/change_tag_def (
ctd_id INT UNSIGNED AUTO_INCREMENT NOT NULL, ctd_name VARBINARY(255) NOT NULL, ctd_user_defined TINYINT(1) NOT NULL, ctd_count BIGINT UNSIGNED DEFAULT 0 NOT NULL, UNIQUE INDEX ctd_name (ctd_name), INDEX ctd_count (ctd_count), INDEX ctd_user_defined (ctd_user_defined), PRIMARY KEY(ctd_id)
) /*$wgDBTableOptions*/;
CREATE TABLE /*_*/ipblocks_restrictions (
ir_ipb_id INT NOT NULL, ir_type TINYINT(4) NOT NULL, ir_value INT NOT NULL, INDEX ir_type_value (ir_type, ir_value), PRIMARY KEY(ir_ipb_id, ir_type, ir_value)
) /*$wgDBTableOptions*/;
CREATE TABLE /*_*/querycache (
qc_type VARBINARY(32) NOT NULL, qc_value INT UNSIGNED DEFAULT 0 NOT NULL, qc_namespace INT DEFAULT 0 NOT NULL, qc_title VARBINARY(255) DEFAULT NOT NULL, INDEX qc_type (qc_type, qc_value)
) /*$wgDBTableOptions*/;
CREATE TABLE /*_*/querycachetwo (
qcc_type VARBINARY(32) NOT NULL, qcc_value INT UNSIGNED DEFAULT 0 NOT NULL, qcc_namespace INT DEFAULT 0 NOT NULL, qcc_title VARBINARY(255) DEFAULT NOT NULL, qcc_namespacetwo INT DEFAULT 0 NOT NULL, qcc_titletwo VARBINARY(255) DEFAULT NOT NULL, INDEX qcc_type (qcc_type, qcc_value), INDEX qcc_title ( qcc_type, qcc_namespace, qcc_title ), INDEX qcc_titletwo ( qcc_type, qcc_namespacetwo, qcc_titletwo )
) /*$wgDBTableOptions*/;
CREATE TABLE /*_*/page_restrictions (
pr_id INT UNSIGNED AUTO_INCREMENT NOT NULL, pr_page INT NOT NULL, pr_type VARBINARY(60) NOT NULL, pr_level VARBINARY(60) NOT NULL, pr_cascade TINYINT NOT NULL, pr_user INT UNSIGNED DEFAULT NULL, pr_expiry VARBINARY(14) DEFAULT NULL, UNIQUE INDEX pr_pagetype (pr_page, pr_type), INDEX pr_typelevel (pr_type, pr_level), INDEX pr_level (pr_level), INDEX pr_cascade (pr_cascade), PRIMARY KEY(pr_id)
) /*$wgDBTableOptions*/;
CREATE TABLE /*_*/user_groups (
ug_user INT UNSIGNED DEFAULT 0 NOT NULL, ug_group VARBINARY(255) DEFAULT NOT NULL, ug_expiry VARBINARY(14) DEFAULT NULL, INDEX ug_group (ug_group), INDEX ug_expiry (ug_expiry), PRIMARY KEY(ug_user, ug_group)
) /*$wgDBTableOptions*/;
CREATE TABLE /*_*/querycache_info (
qci_type VARBINARY(32) DEFAULT NOT NULL, qci_timestamp BINARY(14) DEFAULT '19700101000000' NOT NULL, PRIMARY KEY(qci_type)
) /*$wgDBTableOptions*/;
CREATE TABLE /*_*/watchlist (
wl_id INT UNSIGNED AUTO_INCREMENT NOT NULL, wl_user INT UNSIGNED NOT NULL, wl_namespace INT DEFAULT 0 NOT NULL, wl_title VARBINARY(255) DEFAULT NOT NULL, wl_notificationtimestamp BINARY(14) DEFAULT NULL, UNIQUE INDEX wl_user (wl_user, wl_namespace, wl_title), INDEX wl_namespace_title (wl_namespace, wl_title), INDEX wl_user_notificationtimestamp ( wl_user, wl_notificationtimestamp ), PRIMARY KEY(wl_id)
) /*$wgDBTableOptions*/;
CREATE TABLE /*_*/sites (
site_id INT UNSIGNED AUTO_INCREMENT NOT NULL, site_global_key VARBINARY(64) NOT NULL, site_type VARBINARY(32) NOT NULL, site_group VARBINARY(32) NOT NULL, site_source VARBINARY(32) NOT NULL, site_language VARBINARY(35) NOT NULL, site_protocol VARBINARY(32) NOT NULL, site_domain VARCHAR(255) NOT NULL, site_data BLOB NOT NULL, site_forward TINYINT(1) NOT NULL, site_config BLOB NOT NULL, UNIQUE INDEX site_global_key (site_global_key), INDEX site_type (site_type), INDEX site_group (site_group), INDEX site_source (site_source), INDEX site_language (site_language), INDEX site_protocol (site_protocol), INDEX site_domain (site_domain), INDEX site_forward (site_forward), PRIMARY KEY(site_id)
) /*$wgDBTableOptions*/;
CREATE TABLE /*_*/user_newtalk (
user_id INT UNSIGNED DEFAULT 0 NOT NULL, user_ip VARBINARY(40) DEFAULT NOT NULL, user_last_timestamp BINARY(14) DEFAULT NULL, INDEX un_user_id (user_id), INDEX un_user_ip (user_ip)
) /*$wgDBTableOptions*/;
CREATE TABLE /*_*/interwiki (
iw_prefix VARCHAR(32) NOT NULL, iw_url BLOB NOT NULL, iw_api BLOB NOT NULL, iw_wikiid VARCHAR(64) NOT NULL, iw_local TINYINT(1) NOT NULL, iw_trans TINYINT DEFAULT 0 NOT NULL, PRIMARY KEY(iw_prefix)
) /*$wgDBTableOptions*/;
CREATE TABLE /*_*/protected_titles (
pt_namespace INT NOT NULL, pt_title VARBINARY(255) NOT NULL, pt_user INT UNSIGNED NOT NULL, pt_reason_id BIGINT UNSIGNED NOT NULL, pt_timestamp BINARY(14) NOT NULL, pt_expiry VARBINARY(14) NOT NULL, pt_create_perm VARBINARY(60) NOT NULL, INDEX pt_timestamp (pt_timestamp), PRIMARY KEY(pt_namespace, pt_title)
) /*$wgDBTableOptions*/;
CREATE TABLE /*_*/externallinks (
el_id INT UNSIGNED AUTO_INCREMENT NOT NULL, el_from INT UNSIGNED DEFAULT 0 NOT NULL, el_to BLOB NOT NULL, el_index BLOB NOT NULL, el_index_60 VARBINARY(60) NOT NULL, INDEX el_from ( el_from, el_to(40) ), INDEX el_to ( el_to(60), el_from ), INDEX el_index ( el_index(60) ), INDEX el_index_60 (el_index_60, el_id), INDEX el_from_index_60 (el_from, el_index_60, el_id), PRIMARY KEY(el_id)
) /*$wgDBTableOptions*/;
CREATE TABLE /*_*/ip_changes (
ipc_rev_id INT UNSIGNED DEFAULT 0 NOT NULL, ipc_rev_timestamp BINARY(14) NOT NULL, ipc_hex VARBINARY(35) DEFAULT NOT NULL, INDEX ipc_rev_timestamp (ipc_rev_timestamp), INDEX ipc_hex_time (ipc_hex, ipc_rev_timestamp), PRIMARY KEY(ipc_rev_id)
) /*$wgDBTableOptions*/;
CREATE TABLE /*_*/revision_comment_temp (
revcomment_rev INT UNSIGNED NOT NULL, revcomment_comment_id BIGINT UNSIGNED NOT NULL, UNIQUE INDEX revcomment_rev (revcomment_rev), PRIMARY KEY( revcomment_rev, revcomment_comment_id )
) /*$wgDBTableOptions*/;
CREATE TABLE /*_*/revision_actor_temp (
revactor_rev INT UNSIGNED NOT NULL, revactor_actor BIGINT UNSIGNED NOT NULL, revactor_timestamp BINARY(14) NOT NULL, revactor_page INT UNSIGNED NOT NULL, UNIQUE INDEX revactor_rev (revactor_rev), INDEX actor_timestamp ( revactor_actor, revactor_timestamp ), INDEX page_actor_timestamp ( revactor_page, revactor_actor, revactor_timestamp ), PRIMARY KEY(revactor_rev, revactor_actor)
) /*$wgDBTableOptions*/;
CREATE TABLE /*_*/page_props (
pp_page INT NOT NULL, pp_propname VARBINARY(60) NOT NULL, pp_value BLOB NOT NULL, pp_sortkey FLOAT DEFAULT NULL, UNIQUE INDEX pp_propname_page (pp_propname, pp_page), UNIQUE INDEX pp_propname_sortkey_page (pp_propname, pp_sortkey, pp_page), PRIMARY KEY(pp_page, pp_propname)
) /*$wgDBTableOptions*/;
CREATE TABLE /*_*/job (
job_id INT UNSIGNED AUTO_INCREMENT NOT NULL, job_cmd VARBINARY(60) DEFAULT NOT NULL, job_namespace INT NOT NULL, job_title VARBINARY(255) NOT NULL, job_timestamp BINARY(14) DEFAULT NULL, job_params MEDIUMBLOB NOT NULL, job_random INT UNSIGNED DEFAULT 0 NOT NULL, job_attempts INT UNSIGNED DEFAULT 0 NOT NULL, job_token VARBINARY(32) DEFAULT NOT NULL, job_token_timestamp BINARY(14) DEFAULT NULL, job_sha1 VARBINARY(32) DEFAULT NOT NULL, INDEX job_sha1 (job_sha1), INDEX job_cmd_token (job_cmd, job_token, job_random), INDEX job_cmd_token_id (job_cmd, job_token, job_id), INDEX job_cmd ( job_cmd, job_namespace, job_title, job_params(128) ), INDEX job_timestamp (job_timestamp), PRIMARY KEY(job_id)
) /*$wgDBTableOptions*/;
CREATE TABLE /*_*/slot_roles (
role_id INT AUTO_INCREMENT NOT NULL, role_name VARBINARY(64) NOT NULL, UNIQUE INDEX role_name (role_name), PRIMARY KEY(role_id)
) /*$wgDBTableOptions*/;
CREATE TABLE /*_*/content_models (
model_id INT AUTO_INCREMENT NOT NULL, model_name VARBINARY(64) NOT NULL, UNIQUE INDEX model_name (model_name), PRIMARY KEY(model_id)
) /*$wgDBTableOptions*/;
CREATE TABLE /*_*/categorylinks (
cl_from INT UNSIGNED DEFAULT 0 NOT NULL, cl_to VARBINARY(255) DEFAULT NOT NULL, cl_sortkey VARBINARY(230) DEFAULT NOT NULL, cl_sortkey_prefix VARBINARY(255) DEFAULT NOT NULL, cl_timestamp TIMESTAMP NOT NULL, cl_collation VARBINARY(32) DEFAULT NOT NULL, cl_type ENUM('page', 'subcat', 'file') DEFAULT 'page' NOT NULL, INDEX cl_sortkey ( cl_to, cl_type, cl_sortkey, cl_from ), INDEX cl_timestamp (cl_to, cl_timestamp), INDEX cl_collation_ext ( cl_collation, cl_to, cl_type, cl_from ), PRIMARY KEY(cl_from, cl_to)
) /*$wgDBTableOptions*/;
CREATE TABLE /*_*/logging (
log_id INT UNSIGNED AUTO_INCREMENT NOT NULL, log_type VARBINARY(32) DEFAULT NOT NULL, log_action VARBINARY(32) DEFAULT NOT NULL, log_timestamp BINARY(14) DEFAULT '19700101000000' NOT NULL, log_actor BIGINT UNSIGNED NOT NULL, log_namespace INT DEFAULT 0 NOT NULL, log_title VARBINARY(255) DEFAULT NOT NULL, log_page INT UNSIGNED DEFAULT NULL, log_comment_id BIGINT UNSIGNED NOT NULL, log_params BLOB NOT NULL, log_deleted TINYINT UNSIGNED DEFAULT 0 NOT NULL, INDEX log_type_time (log_type, log_timestamp), INDEX log_actor_time (log_actor, log_timestamp), INDEX log_page_time ( log_namespace, log_title, log_timestamp ), INDEX log_times (log_timestamp), INDEX log_actor_type_time ( log_actor, log_type, log_timestamp ), INDEX log_page_id_time (log_page, log_timestamp), INDEX log_type_action ( log_type, log_action, log_timestamp ), PRIMARY KEY(log_id)
) /*$wgDBTableOptions*/;
CREATE TABLE /*_*/uploadstash (
us_id INT UNSIGNED AUTO_INCREMENT NOT NULL, us_user INT UNSIGNED NOT NULL, us_key VARCHAR(255) NOT NULL, us_orig_path VARCHAR(255) NOT NULL, us_path VARCHAR(255) NOT NULL, us_source_type VARCHAR(50) DEFAULT NULL, us_timestamp BINARY(14) NOT NULL, us_status VARCHAR(50) NOT NULL, us_chunk_inx INT UNSIGNED DEFAULT NULL, us_props BLOB DEFAULT NULL, us_size INT UNSIGNED NOT NULL, us_sha1 VARCHAR(31) NOT NULL, us_mime VARCHAR(255) DEFAULT NULL, us_media_type ENUM( 'UNKNOWN', 'BITMAP', 'DRAWING', 'AUDIO', 'VIDEO', 'MULTIMEDIA', 'OFFICE', 'TEXT', 'EXECUTABLE', 'ARCHIVE', '3D' ) DEFAULT NULL, us_image_width INT UNSIGNED DEFAULT NULL, us_image_height INT UNSIGNED DEFAULT NULL, us_image_bits SMALLINT UNSIGNED DEFAULT NULL, INDEX us_user (us_user), UNIQUE INDEX us_key (us_key), INDEX us_timestamp (us_timestamp), PRIMARY KEY(us_id)
) /*$wgDBTableOptions*/;
CREATE TABLE /*_*/filearchive (
fa_id INT AUTO_INCREMENT NOT NULL, fa_name VARBINARY(255) DEFAULT NOT NULL, fa_archive_name VARBINARY(255) DEFAULT , fa_storage_group VARBINARY(16) DEFAULT NULL, fa_storage_key VARBINARY(64) DEFAULT , fa_deleted_user INT DEFAULT NULL, fa_deleted_timestamp BINARY(14) DEFAULT NULL, fa_deleted_reason_id BIGINT UNSIGNED NOT NULL, fa_size INT UNSIGNED DEFAULT 0, fa_width INT DEFAULT 0, fa_height INT DEFAULT 0, fa_metadata MEDIUMBLOB DEFAULT NULL, fa_bits INT DEFAULT 0, fa_media_type ENUM( 'UNKNOWN', 'BITMAP', 'DRAWING', 'AUDIO', 'VIDEO', 'MULTIMEDIA', 'OFFICE', 'TEXT', 'EXECUTABLE', 'ARCHIVE', '3D' ) DEFAULT NULL, fa_major_mime ENUM( 'unknown', 'application', 'audio', 'image', 'text', 'video', 'message', 'model', 'multipart', 'chemical' ) DEFAULT 'unknown', fa_minor_mime VARBINARY(100) DEFAULT 'unknown', fa_description_id BIGINT UNSIGNED NOT NULL, fa_actor BIGINT UNSIGNED NOT NULL, fa_timestamp BINARY(14) DEFAULT NULL, fa_deleted TINYINT UNSIGNED DEFAULT 0 NOT NULL, fa_sha1 VARBINARY(32) DEFAULT NOT NULL, INDEX fa_name (fa_name, fa_timestamp), INDEX fa_storage_group ( fa_storage_group, fa_storage_key ), INDEX fa_deleted_timestamp (fa_deleted_timestamp), INDEX fa_actor_timestamp (fa_actor, fa_timestamp), INDEX fa_sha1 ( fa_sha1(10) ), PRIMARY KEY(fa_id)
) /*$wgDBTableOptions*/;
CREATE TABLE /*_*/text (
old_id INT UNSIGNED AUTO_INCREMENT NOT NULL, old_text MEDIUMBLOB NOT NULL, old_flags TINYBLOB NOT NULL, PRIMARY KEY(old_id)
) /*$wgDBTableOptions*/;
CREATE TABLE /*_*/oldimage (
oi_name VARBINARY(255) DEFAULT NOT NULL, oi_archive_name VARBINARY(255) DEFAULT NOT NULL, oi_size INT UNSIGNED DEFAULT 0 NOT NULL, oi_width INT DEFAULT 0 NOT NULL, oi_height INT DEFAULT 0 NOT NULL, oi_bits INT DEFAULT 0 NOT NULL, oi_description_id BIGINT UNSIGNED NOT NULL, oi_actor BIGINT UNSIGNED NOT NULL, oi_timestamp BINARY(14) NOT NULL, oi_metadata MEDIUMBLOB NOT NULL, oi_media_type ENUM( 'UNKNOWN', 'BITMAP', 'DRAWING', 'AUDIO', 'VIDEO', 'MULTIMEDIA', 'OFFICE', 'TEXT', 'EXECUTABLE', 'ARCHIVE', '3D' ) DEFAULT NULL, oi_major_mime ENUM( 'unknown', 'application', 'audio', 'image', 'text', 'video', 'message', 'model', 'multipart', 'chemical' ) DEFAULT 'unknown' NOT NULL, oi_minor_mime VARBINARY(100) DEFAULT 'unknown' NOT NULL, oi_deleted TINYINT UNSIGNED DEFAULT 0 NOT NULL, oi_sha1 VARBINARY(32) DEFAULT NOT NULL, INDEX oi_actor_timestamp (oi_actor, oi_timestamp), INDEX oi_name_timestamp (oi_name, oi_timestamp), INDEX oi_name_archive_name ( oi_name, oi_archive_name(14) ), INDEX oi_sha1 ( oi_sha1(10) )
) /*$wgDBTableOptions*/;
CREATE TABLE /*_*/objectcache (
keyname VARBINARY(255) DEFAULT NOT NULL, value MEDIUMBLOB DEFAULT NULL, exptime BINARY(14) NOT NULL, INDEX exptime (exptime), PRIMARY KEY(keyname)
) /*$wgDBTableOptions*/;
CREATE TABLE /*_*/ipblocks (
ipb_id INT AUTO_INCREMENT NOT NULL, ipb_address TINYBLOB NOT NULL, ipb_user INT UNSIGNED DEFAULT 0 NOT NULL, ipb_by_actor BIGINT UNSIGNED NOT NULL, ipb_reason_id BIGINT UNSIGNED NOT NULL, ipb_timestamp BINARY(14) NOT NULL, ipb_auto TINYINT(1) DEFAULT 0 NOT NULL, ipb_anon_only TINYINT(1) DEFAULT 0 NOT NULL, ipb_create_account TINYINT(1) DEFAULT 1 NOT NULL, ipb_enable_autoblock TINYINT(1) DEFAULT 1 NOT NULL, ipb_expiry VARBINARY(14) NOT NULL, ipb_range_start TINYBLOB NOT NULL, ipb_range_end TINYBLOB NOT NULL, ipb_deleted TINYINT(1) DEFAULT 0 NOT NULL, ipb_block_email TINYINT(1) DEFAULT 0 NOT NULL, ipb_allow_usertalk TINYINT(1) DEFAULT 0 NOT NULL, ipb_parent_block_id INT DEFAULT NULL, ipb_sitewide TINYINT(1) DEFAULT 1 NOT NULL, UNIQUE INDEX ipb_address_unique ( ipb_address(255), ipb_user, ipb_auto ), INDEX ipb_user (ipb_user), INDEX ipb_range ( ipb_range_start(8), ipb_range_end(8) ), INDEX ipb_timestamp (ipb_timestamp), INDEX ipb_expiry (ipb_expiry), INDEX ipb_parent_block_id (ipb_parent_block_id), PRIMARY KEY(ipb_id)
) /*$wgDBTableOptions*/;
CREATE TABLE /*_*/image (
img_name VARBINARY(255) DEFAULT NOT NULL, img_size INT UNSIGNED DEFAULT 0 NOT NULL, img_width INT DEFAULT 0 NOT NULL, img_height INT DEFAULT 0 NOT NULL, img_metadata MEDIUMBLOB NOT NULL, img_bits INT DEFAULT 0 NOT NULL, img_media_type ENUM( 'UNKNOWN', 'BITMAP', 'DRAWING', 'AUDIO', 'VIDEO', 'MULTIMEDIA', 'OFFICE', 'TEXT', 'EXECUTABLE', 'ARCHIVE', '3D' ) DEFAULT NULL, img_major_mime ENUM( 'unknown', 'application', 'audio', 'image', 'text', 'video', 'message', 'model', 'multipart', 'chemical' ) DEFAULT 'unknown' NOT NULL, img_minor_mime VARBINARY(100) DEFAULT 'unknown' NOT NULL, img_description_id BIGINT UNSIGNED NOT NULL, img_actor BIGINT UNSIGNED NOT NULL, img_timestamp BINARY(14) NOT NULL, img_sha1 VARBINARY(32) DEFAULT NOT NULL, INDEX img_actor_timestamp (img_actor, img_timestamp), INDEX img_size (img_size), INDEX img_timestamp (img_timestamp), INDEX img_sha1 ( img_sha1(10) ), INDEX img_media_mime ( img_media_type, img_major_mime, img_minor_mime ), PRIMARY KEY(img_name)
) /*$wgDBTableOptions*/;
CREATE TABLE /*_*/recentchanges (
rc_id INT UNSIGNED AUTO_INCREMENT NOT NULL, rc_timestamp BINARY(14) NOT NULL, rc_actor BIGINT UNSIGNED NOT NULL, rc_namespace INT DEFAULT 0 NOT NULL, rc_title VARBINARY(255) DEFAULT NOT NULL, rc_comment_id BIGINT UNSIGNED NOT NULL, rc_minor TINYINT UNSIGNED DEFAULT 0 NOT NULL, rc_bot TINYINT UNSIGNED DEFAULT 0 NOT NULL, rc_new TINYINT UNSIGNED DEFAULT 0 NOT NULL, rc_cur_id INT UNSIGNED DEFAULT 0 NOT NULL, rc_this_oldid INT UNSIGNED DEFAULT 0 NOT NULL, rc_last_oldid INT UNSIGNED DEFAULT 0 NOT NULL, rc_type TINYINT UNSIGNED DEFAULT 0 NOT NULL, rc_source VARBINARY(16) DEFAULT NOT NULL, rc_patrolled TINYINT UNSIGNED DEFAULT 0 NOT NULL, rc_ip VARBINARY(40) DEFAULT NOT NULL, rc_old_len INT DEFAULT NULL, rc_new_len INT DEFAULT NULL, rc_deleted TINYINT UNSIGNED DEFAULT 0 NOT NULL, rc_logid INT UNSIGNED DEFAULT 0 NOT NULL, rc_log_type VARBINARY(255) DEFAULT NULL, rc_log_action VARBINARY(255) DEFAULT NULL, rc_params BLOB DEFAULT NULL, INDEX rc_timestamp (rc_timestamp), INDEX rc_namespace_title_timestamp ( rc_namespace, rc_title, rc_timestamp ), INDEX rc_cur_id (rc_cur_id), INDEX rc_new_name_timestamp ( rc_new, rc_namespace, rc_timestamp ), INDEX rc_ip (rc_ip), INDEX rc_ns_actor (rc_namespace, rc_actor), INDEX rc_actor (rc_actor, rc_timestamp), INDEX rc_name_type_patrolled_timestamp ( rc_namespace, rc_type, rc_patrolled, rc_timestamp ), INDEX rc_this_oldid (rc_this_oldid), PRIMARY KEY(rc_id)
) /*$wgDBTableOptions*/;
CREATE TABLE /*_*/archive (
ar_id INT UNSIGNED AUTO_INCREMENT NOT NULL, ar_namespace INT DEFAULT 0 NOT NULL, ar_title VARBINARY(255) DEFAULT NOT NULL, ar_comment_id BIGINT UNSIGNED NOT NULL, ar_actor BIGINT UNSIGNED NOT NULL, ar_timestamp BINARY(14) NOT NULL, ar_minor_edit TINYINT DEFAULT 0 NOT NULL, ar_rev_id INT UNSIGNED NOT NULL, ar_deleted TINYINT UNSIGNED DEFAULT 0 NOT NULL, ar_len INT UNSIGNED DEFAULT NULL, ar_page_id INT UNSIGNED DEFAULT NULL, ar_parent_id INT UNSIGNED DEFAULT NULL, ar_sha1 VARBINARY(32) DEFAULT NOT NULL, INDEX ar_name_title_timestamp ( ar_namespace, ar_title, ar_timestamp ), INDEX ar_actor_timestamp (ar_actor, ar_timestamp), UNIQUE INDEX ar_revid_uniq (ar_rev_id), PRIMARY KEY(ar_id)
) /*$wgDBTableOptions*/;
CREATE TABLE /*_*/page (
page_id INT UNSIGNED AUTO_INCREMENT NOT NULL, page_namespace INT NOT NULL, page_title VARBINARY(255) NOT NULL, page_restrictions TINYBLOB DEFAULT NULL, page_is_redirect TINYINT UNSIGNED DEFAULT 0 NOT NULL, page_is_new TINYINT UNSIGNED DEFAULT 0 NOT NULL, page_random DOUBLE PRECISION UNSIGNED NOT NULL, page_touched BINARY(14) NOT NULL, page_links_updated VARBINARY(14) DEFAULT NULL, page_latest INT UNSIGNED NOT NULL, page_len INT UNSIGNED NOT NULL, page_content_model VARBINARY(32) DEFAULT NULL, page_lang VARBINARY(35) DEFAULT NULL, UNIQUE INDEX name_title (page_namespace, page_title), INDEX page_random (page_random), INDEX page_len (page_len), INDEX page_redirect_namespace_len ( page_is_redirect, page_namespace, page_len ), PRIMARY KEY(page_id)
) /*$wgDBTableOptions*/;