web-dev-qa-db-ja.com

WordpressでENGINE = InnoDBを明示的に指定できますか?

私のテーブルはすべてInnoDBに変換しましたが、MySQLサーバー(共有ホスティングの場合はアクセスできない)にはMyISAMがデフォルトとして設定されているため、Wordpressが作成する新しいテーブルはすべて新しいテーブルに追加されます。私のマルチサイトではMyISAMエンジンを使用していますので、手動で変更する必要があります。新しいテーブルを作成するときに、WordpressをInnoDBエンジンを強制するように設定することはできますか。

デフォルトではWordpressは何も指定せず、テーブルでデフォルトのエンジンを使用できるようにしますが、私が追加できるプラグインがあるかどうか疑問に思います。

ENGINE=InnoDB

すべてのCREATE TABLEクエリに対する句。

3
metakermit

新しいテーブルを作成するコードがdbDelta()を使用している場合(必要がある場合)、クエリをフィルタ処理できます(wp-admin/includes/upgrade.phpを参照)。

add_filter( 'dbdelta_create_queries', function( Array $queries )
{
    foreach ( $queries as $table => $query )
    {
        if ( FALSE !== stripos( $query, 'CREATE TABLE' ) )
        {
            // change the query here
        }
    }

    return $queries;
});
3
fuxia