よくありがちなパターンですが、
複数のMTをインストールする方法がありますのでご紹介。
◇ 実施した環境
MT 5.0.4
MySQL 5.1.50
変更が必要なファイルは以下の3つ:
- lib/MT/ObjectDriver/Driver/
DBI.pm - lib/MT/ObjectDriver/Driver/
DBD/Legacy.pm - lib/MT/ObjectDriver/Driver/
DBD/Pg.pm
DBI.pm(16-30行目)
sub init {
my $driver = shift;
my (%param) = @_;
$param{prefix} ||= 'mt5_';
$driver->SUPER::init(%param);
my $opts = $driver->connect_options || {};
require MT;
my $mt = MT->instance;
my $cfg = $mt->config;
$opts->{RaiseError} = $cfg->DBIRaiseError;
$driver->connect_options($ opts);
$driver;
}
Legacy.pm(47-52行目)
sub db_column_name {
my $dbd = shift;
my ($table, $col) = @_;
$table =~ s{ \A mt5_ }{}xms;
return join('_', $table, $col);
}
Pg.pm(128-141行目)
sub sequence_name {
my $dbd = shift;
my($class) = @_;
my $key = $class->properties->{primary_ key};
## If it's a complex primary key, use the second half.
if(ref $key) {
$key = $key->[1];
}
# mt_tablename_columnname
return join '_', 'mt5',
$dbd->db_column_name(MT:: Object->driver->table_for($ class), $key);
}
※参考にしたサイト
で、実際のDBを走らせてみたらなんと!
DBに新しいフィールドが出来てるじゃないですか!!
DBの登録もキチンとされているし、MTの動きも問題ない。
取り敢えずこのまま運用を続けてみることにします。
※ これを実施する前にかならず現状のDBバックアップを取ってくだ さい。
また、これにより復元できない、 エラーが起きたとしても当方は責任持てませんのであしからず。