2010年9月21日火曜日

Mediawiki-PostgreSQLのアップグレード(ようやく成功)

 ずいぶん前の記事になるが、Mediawiki-PostgreSQLのアップグレード(結局失敗)で、止まっていました。
 今回、Trac,Mediawiki,Subversionで使用しているサーバの電源がデロデロになって、ぶっ壊れたのを機会に、Mediawikiもアップグレードしました。

 手順は、
http://www.mediawiki.org/wiki/Manual:Upgrading_Postgres
と基本的に同じです。
アップグレードに成功したかに見えて、最後の最後にアクセスしてみると、l10n_cache を更新する権限がないとか言われて、怒られます。こいつは、なんて事はない可愛いミスです。
オーナーを "postgres" から "wikiuser" に変更してやれば済む事でした。(アカウント名は、インストールした時の状態に応じて変わります)

 いやー、長かった。

 まぁ、ちょい手間取ったのには、ぶっとんだサーバが i386 版でして、手元にあるのが x86_64 ばかりなためでした。PostgreSQL の database イメージが i386 版で構築されているので、i386版のPostgreSQLを用意する必要がありました。CentOS x86_64 を KVM に変更して、仮想化環境を構築。そして i386 のカーネルをインストール。で、KVM ネットワークの接続を可能にするために、ブリッジ環境を構築。ファイルのやりとりが面倒になってきたので、NFSを設定…とかやったからでした。

 時間があれば、KVM とブリッジの設定、DRBD と Heartbeat とかについても書くんですが・・・パス。

2010/09/22 追記:別のマシンにセットアップしたら、Table '...l10n_cache' doesn't exist と言われて怒られてしまった。しばらく原因がわからなかったが、どうやら、PostgreSQLのschemaのsearch_pathの設定がまずかったようだ。
ここは、ちょっと詳しく解説する。
最初に成功した設定では、ログインロール(login role)が下記のようになっていた。
ALTER ROLE wikiuser SET search_path='mediawiki, public';
そして、backup & restore で、取り込んだサイトでは、下記のようになっていた。
ALTER ROLE wikiuser SET search_path="mediawiki, public";
wikiuser でログインしてエラーになったクエリを実行してみると、確かにエラーになる。
試しに mediawiki.l10n_cache と指定してみると、クエリはパスした。
犯人は、search_path の設定だ。
postgres でログインしてみると、エラーにならないので、postgres を wikiuser に
置き換えて設定をし直すと、うまく動作するようになった(下記)。
おかしな事に、pgadmin3 のバージョンによって、'mediawiki, public' だったり、
mediawiki, public だったりする。下記はエラーになったマシンでの表記だ。
ALTER ROLE wikiuser SET search_path=mediawiki, public;
まぁ、まっとうに考えれば、シングル・クォーテーションが正解だろう。
どこで、ダブル・クォーテーションに化けた???

2010/09/22 更に追記: はっきり言って、エラーの山…。データベース・パーミッションの設定がボロボロ。新しいテーブルは、ことごとくユーザが postgres のままなので、もぐらたたきのように wikiuser をオーナーに変更して回った。疲れる。

0 件のコメント: