株式会社AZU (アズ) | 長野市のWEBシステム・業務システム・WEBサイト制作会社

+ MENU

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]
このエントリーをはてなブックマークに追加