●レンタルサーバで複数のMTをインストールする方法
レンタルサーバ等、「1アカウントに付き使用可能なデータベース(インスタンス)1つ」という制限がある場合、もし複数のMTをインストールしたい場合に問題が発生します。
(ここでいう「データベース(インスタンス)」というのは、mt-config.cgiの「Database」に指定するデータベース名のこと。)
こういう場合は、生成されるテーブル名を変更しなくてはなりません。
その方法をメモしておきます。
(対象:MT3.2以上(3.3対応)、MySQLもしくはPostgreSQL使用の場合)
(※2006.08.01 追記あり)
初めに
MTでは、テーブル名にprefix(接頭辞)を付けることで、他のテーブルと区別するようになっています。
標準では"mt_"です。
これをMTそれぞれで別のモノに変更することで、データベースは一つでも複数のMTをインストールすることができます。
例として、インストールする各MTを「MT1」、「MT2」、「MT3」、…とし、それぞれに対応するprefixを"mt1_","mt2_","mt3_", ... として説明します。
ソースの編集(ハッキング)
以下のファイルをテキストエディタで開きます。
- lib/MT/ObjectDriver/DBI/mysql.pm(MySQLの場合)
- lib/MT/ObjectDriver/DBI/postgres.pm(PostgreSQLの場合)
「mt_」という文字列を全て、インストールするMTごとに決めた別のprefix("mt1_","mt2_","mt3_", ... のいずれか)に置換します。
【※2006.08.01 追記】
分かりやすいところに 'mt_' という記述がかたまっています(sub _prepare_from_where の記述中)が、それ以外にも存在するので注意してください。
特に、文字列中に「mt_」が含まれている('mt_'だけで一つの文字列になっていない)場合もあるので、要注意です。
例として、mysql.pm ならば、以下↓(MT3.2ならば165行目、MT3.31ならば230行目)も置換対象です。
my $sth = $dbh->prepare('describe mt_' . $ds) or return undef;
↓
my $sth = $dbh->prepare('describe mt1_' . $ds) or return undef;
テキストエディタの一括置換機能が使用できるならば、「mt_」を全て「mt1_」(「mt2_」「mt3_」...)に置換すればOKです。
インストール
MT1、MT2、MT3、…をそれぞれ別のディレクトリにアップロードして、インストール作業を実行します。以上。




コメント
参考にさせていただきました。
ありがとうございます。
本文中には記述がなかったのですが、
lib/MT/ObjectDriver/DBI.pm
というファイルにも
sub table_prefix { 'mt' }
という記述があり、ここも'mt1'に変更する必要がありました。
MTのバージョンは3.34です。
以上捕捉させていただきました。
Posted by: K | 2007/04/10 11:53
>Kさま
フィードバックありがとうございます。
すみません、見落としがあったようですね(汗)
ご指摘・ご報告ありがとうございます。
近いうちに記事を修正したいと思います。
Posted by: あんちもん2@会社 | 2007/04/10 12:40