我可以在WordPress中显式指定Engine=InnoDB吗?

时间:2013-08-31 作者:metakermit

我将所有表都转换为InnoDB,但MySQL服务器(我无法访问,因为我在共享主机上)默认使用MyISAM,因此Wordpress创建的每个新表(例如,当我在多站点上添加新站点时)都使用MyISAM引擎,我必须手动更改它。在创建新表时,我是否可以通过某种方式设置Wordpress来强制使用InnoDB引擎?

我知道默认情况下Wordpress不指定任何内容,并允许表使用默认引擎,但我想知道是否有插件可以添加

ENGINE=InnoDB
所有CREATE TABLE 查询。

1 个回复
最合适的回答,由SO网友:fuxia 整理而成

如果创建新表的代码使用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;
});

结束

相关推荐

WordPress MySQL查询和复制

我的wordpress数据库上的mysql查询有问题。我有国家和城市的自定义字段。目前,我有一个显示“英国”国家所有城市的查询$querystr = \" SELECT wposts.* FROM $wpdb->posts wposts, $wpdb->postmeta wpostmeta WHERE wposts.ID = wpostmeta.post_id AND wpostmeta.meta_key = \'Country\' AND wp