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 に
とりあえずこれで無事インポート出来ました。
肝心のソフトの方はまた明日ということで。