« 無断転載されたようだ | メイン | システムパッケージのアップグレードについて »

Mediawikiのデータベースがインポート出来ない

似非wiki版ページのwikiソフト (MediaWiKi) をアップグレードしましょうかと、まず現行のサーバからデータベースをエクスポートして、実験機にインポートしようとしたらエラーが出て出来ませんでした。

#1071 - Specified key was too long; max key length is 1000 bytes

キーの長さが長すぎるんだと。知らんがな。
文句言われた箇所のテーブルの構造を見ると

CREATE TABLE xxxx_categorylinks 以下かなり略
cl_to  varchar( 255 ) ←こいつ
cl_sortkey varchar( 86 ) ←こやつ
KEY l_sortkey (cl_to , cl_sortkey ) ←キーに指定されている

文字コードがUTF-8になっているので一文字3バイト varchar 255文字は 765バイト。 86文字は258バイト。合計1023バイトでアウト。と、いうことらしい。天下のWikipediaご使用のソフトとは言え、マルチバイトコードでまたもや…。

これを回避するには、

1. CHARACTER SET utf8 を DEFAULT CHARACTER SET latin1にする
2.キーの長さが収まる様に、テーブル構造を変更する。

の二通りがあるようで、毎回エクスポートする度に書き換えるのがメンドイのでテーブル構造を変えました。

2-1. _categorylinks の cl_to varchar( 255 ) を 240 に
2-2. _job の job_cmd varchar( 255 ) と job_title varchar( 255 ) を 165 に

とりあえずこれで無事インポート出来ました。

肝心のソフトの方はまた明日ということで。