Author: cvb-mediawiki
Description:
After upgrade from 1.5.8 to 1.6.3 I was got this result when running refreshLinks.php:
A database error has occurred
Query: SELECT page_namespace,page_title,page_id FROM mw_page,`mw_templatelink
s` WHERE (tl_from=page_id) AND tl_namespace = '0' AND tl_title = 'Заглавная_страница'
Function: Title::getLinksTo
Error: 1267 Illegal mix of collations (latin1_bin,IMPLICIT) and (utf8_general_ci
,COERCIBLE) for operation '=' (localhost)
Problem was resolved with changing tl_title type from
CREATE TABLE /*$wgDBprefix*/templatelinks (
tl_from int(8) unsigned NOT NULL default '0', -- Key to page_namespace/page_title of the target page. -- The target page may or may not exist, and due to renames -- and deletions may refer to different page records as time -- goes by. tl_namespace int NOT NULL default '0', tl_title varchar(255) binary NOT NULL default '', UNIQUE KEY tl_from(tl_from,tl_namespace,tl_title), KEY (tl_namespace,tl_title)
) TYPE=InnoDB;
to
CREATE TABLE mw_templatelinks (
`tl_from` int(8) unsigned NOT NULL default '0', `tl_namespace` int(11) NOT NULL default '0', `tl_title` varchar(255) character set utf8 collate utf8_bin NOT NULL default '', UNIQUE KEY `tl_from` (`tl_from`,`tl_namespace`,`tl_title`), KEY `tl_namespace` (`tl_namespace`,`tl_title`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
Version: 1.6.x
Severity: major
OS: FreeBSD
Platform: PC