ブログ検索

メタ情報
RSS

XOOPS
ブログもそうだけど、いわゆるCMSである。
簡単にいえば、ほーむぺーじのつーるをつかってほーむぺーじをかんりするシステムであろう。

んで、こないだからCentOSとかPostfixとか言ってるのは、とあるサーバの入れ替えをやってるからなんだけど、罠があった。MySQLとXOOPSが動いていた。この移行に躓く。

XOOPS本体ははPHPで書かれてるからとりあえずはいい。PHPのバージョン違いによる問題は、設定で吸収できる範疇だった。とりあえずMySQLも普通にやればいいかと考え、データベースのバックアップを取ってリストアを試みるもSQLエラーが出る。

内容は「キーの重複」のようなことだったのでバックアップファイルのSQL文を眺めてみる。テーブル定義ではキーが3フィールドに設定されているのを確認した。そのテーブルへのINSERT文を追いかけてみると、そのうちひとつのフィールドについて重複した行がすぐに見つかった。なんだかIPアドレスっぽいのが収録されているんで、そりゃ重複するわな。つうか、いったいこのデータはどうやって作ったんだよ・・・。エラーが出て当たり前だ。例えばMySQL的にキーを無視するような方法があるとして、それをやってしまう行儀の悪いXOOPSモジュールならばこういうこともあろうか。いや、それは適当すぎるか。

MySQLのバージョンは旧サーバ(Ver3系)→新サーバ(Ver5系)ではあるが、見たところ標準的なCREATE TABLE文とINSERT文だし、出るエラーも当然なものなので特に問題はないような。試しにキーの定義を除いて実行してみるも、別のところでエラーがでた。バックアップ全体で35MBもあるSQLの塊だ、ちょっと手がつけられない。

あんまし時間ないんで詳しい調査はまだこれから。旧サーバでインストール初期状態のXOOPSを用意して、同じ手法を用いて新サーバへの移行テストもやってみたが、これはうまくいってしまった。やはりテーブル定義と矛盾したデータが蓄積されていることが問題か・・・

どうしよう。

1件のコメント