MT テーブル名の接頭辞変更
Movable TypeのDBのテーブル名の接頭辞を変更する。
テーブル名「mt_xxxxxxxxx」の
「mt_」を変更する。
一つのDBに複数のMTをインストールするときに接頭辞を変更する。
以下の3つのファイルを修正する。
/lib/MT/ObjectDriver/Driver/DBI.pm
/lib/MT/ObjectDriver/Driver/DBD/Legacy.pm
/lib/MT/ObjectDriver/Driver/DBD/Pg.pm
以下のバージョンの場合で確認した。
MT5
MT6
以下、各ファイルの修正箇所。
■ /lib/MT/ObjectDriver/Driver/DBI.pm
sub init {
my $driver = shift;
my (%param) = @_;
$param{prefix} ||= 'mt_'; ←ここ
$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;
}
■ /lib/MT/ObjectDriver/Driver/DBD/Legacy.pm
sub db_column_name {
my $dbd = shift;
my ( $table, $col ) = @_;
return $1 if $col =~ m/\!(.*)\!/;
$table =~ s{ \A mt_ }{}xms; ←ここ
return join( '_', $table, $col );
}
■ /lib/MT/ObjectDriver/Driver/DBD/Pg.pm
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 '_', 'mt', ←ここ
$dbd->db_column_name( MT::Object->driver->table_for($class), $key );
}
[2018/01/23]