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]