web-dev-qa-db-fra.com

Puis-je spécifier explicitement ENGINE = InnoDB dans Wordpress?

J'ai converti toutes mes tables en InnoDB, mais le serveur MySQL (auquel je ne peux pas accéder, car je suis hébergé sur un hébergement partagé) utilise MyISAM par défaut. Ainsi, chaque nouvelle table créée par Wordpress mon multisite) utilise le moteur MyISAM et je dois le modifier manuellement. Puis-je en quelque sorte configurer Wordpress pour appliquer le moteur InnoDB lors de la création de nouvelles tables?

Je sais que par défaut, Wordpress ne spécifie rien et laisse la table utiliser le moteur par défaut, mais je me demande s’il existe un plugin auquel je pourrais ajouter le

ENGINE=InnoDB

clause à toutes les requêtes CREATE TABLE.

3
metakermit

Si le code créant de nouvelles tables utilise dbDelta() (cela devrait être le cas), vous pouvez filtrer la requête (voir 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