WordPress 2.1 へのデータ移行のテスト

仮想環境にVine4.0を入れてあるので、MySQL4.1へのデータ移行のテストと同時にWordPressのアップグレードのテストも行ってみました。

WordPress2.1自体のインストールはME版と代わりがないので、とりあえずは初期状態でインストール。その後バックアップしたデータをリストアする方法でどんな動作をするかを試してみました。

[u1@vmware wp-includes]# mysql -uroot -p
Enter password: 
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 63 to server version: 5.0.27-standard
Type 'help;' or '\h' for help. Type '\c' to clear the buffer.
mysql> drop database wordpress;
Query OK, 14 rows affected (0.01 sec)
mysql> create database wordpress;
Query OK, 1 row affected (0.00 sec)
mysql> 
mysql> exit
Bye
[u1@vmware wp-includes]# mysql -uroot -p wordpress < wordpress_2007-01-26_04h02m.Friday.sql
Enter password: 
ERROR 1071 (42000) at line 129: Specified key was too long; max key length is 1000 bytes
&#91;/code&#93;

&#91;tegaki&#93;orz&#91;/tegaki&#93;

やはり一筋縄ではいかない模様。<code>Specified key was too long</code>でぐぐってみると、いくつか参考になりそうなサイトを発見。

<a href="http://forums.gentoo.org/viewtopic-t-392443.html">Gentoo Forums :: View topic - Stabilisation of dev-db/mysql-4.1.14</a>によると、どうも主キーの長さが1000バイトを越えているのが原因の模様。UTF8で計算されているから、超過してしまうのですね。実際に引っかかった箇所は、

CREATE TABLE `wp_bdprss_items` (
  `item_feed_url` varchar(240)  NOT NULL default '',
  `item_url` varchar(255)  NOT NULL default '',
  `item_name` varchar(255)  NOT NULL default '',
  `ref_number` int(5) NOT NULL default '0',
  `text` text NOT NULL,
  `item_time` int(15) default NULL,
  `item_update_time` int(15) NOT NULL default '0',
  PRIMARY KEY  (`item_feed_url`,`item_url`),
  KEY `feed_index` (`item_feed_url`),
  KEY `update_index` (`item_update_time`),
  KEY `time_index` (`item_time`)
) TYPE=MyISAM;

というような感じで、(240+255+255)*3=2250 ってことであっさりオーバー。CHARACTER SET latin1を追加してやることで、解決するようなので、

CREATE TABLE `wp_bdprss_items` (
  `item_feed_url` varchar(240) CHARACTER SET latin1 NOT NULL default '',
  `item_url` varchar(255) CHARACTER SET latin1 NOT NULL default '',
  `item_name` varchar(255) CHARACTER SET latin1 NOT NULL default '',
  `ref_number` int(5) NOT NULL default '0',
  `text` text NOT NULL,
  `item_time` int(15) default NULL,
  `item_update_time` int(15) NOT NULL default '0',
  PRIMARY KEY  (`item_feed_url`,`item_url`),
  KEY `feed_index` (`item_feed_url`),
  KEY `update_index` (`item_update_time`),
  KEY `time_index` (`item_time`)
) TYPE=MyISAM;

としてやって、再度読み込ませてみたらエラーは消えますた。

あとはプラグインの動作チェックかな。

wp_pagenaviがページ数のカウントがおかしくなっていたけれど、2.1対応版が公開されていたので、交換したら解決。その他については、とりあえず動いているような感じかなぁ。