web-dev-qa-db-fra.com

Comment puis-je changer le moteur de stockage par défaut dans phpmyadmin?

J'utilise InnoDB presque exclusivement dans mes applications. Cependant, si je ne fais pas attention lors de la configuration de la table, j'oublie de la changer et phpmyadmin me colle avec MyISAM. Existe-t-il un moyen de modifier le moteur de stockage par défaut?

28
Kaji

Vous devez ajouter la ligne default-storage-engine = InnoDB sous le [mysqld] section de votre fichier de configuration mysql (my.cnf ou my.ini selon votre système d'exploitation) et redémarrez le service mysqld.

Je ne pense pas que vous puissiez changer cela via PhpMyAdmin.

21
BenV
UPDATE `GLOBAL_VARIABLES` 
SET `VARIABLE_VALUE`="InnoDB" 
WHERE `VARIABLE_NAME`="DEFAULT_STORAGE_ENGINE"
2
Owen Parker

Cette réponse est un peu tard, mais elle pourrait aider les autres. Si vous avez peur de gâcher quelque chose sur le serveur MySQL, vous pouvez changer le moteur par défaut lors de la création d'une table à partir de phpMyAdmin. Le créateur de sélection par défaut pour les moteurs MySQL est cette fonction sous StorageEngine.class.php dans les dossiers libraries (dans phpMyAdmin 3.5.8.2):

<?php
/**
 * returns HTML code for storage engine select box
 *
 * @param string  $name                    The name of the select form element
 * @param string  $id                      The ID of the form field
 * @param string  $selected                The selected engine
 * @param boolean $offerUnavailableEngines Should unavailable storage engines be offered?
 *
 * @static
 * @return  string  html selectbox
 */
static public function getHtmlSelect($name = 'engine', $id = null,
  $selected = null, $offerUnavailableEngines = false)
{
    $selected   = strtolower($selected);
    $output     = '<select name="' . $name . '"'
        . (empty($id) ? '' : ' id="' . $id . '"') . '>' . "\n";

    foreach (PMA_StorageEngine::getStorageEngines() as $key => $details) {
        // Don't show PERFORMANCE_SCHEMA engine (MySQL 5.5)
        // Don't show MyISAM for Drizzle (allowed only for temporary tables)
        if (! $offerUnavailableEngines
            && ($details['Support'] == 'NO'
            || $details['Support'] == 'DISABLED'
            || $details['Engine'] == 'PERFORMANCE_SCHEMA')
            || (PMA_DRIZZLE && $details['Engine'] == 'MyISAM')
        ) {
            continue;
        }

        $output .= '    <option value="' . htmlspecialchars($key). '"'
            . (empty($details['Comment'])
                ? '' : ' title="' . htmlspecialchars($details['Comment']) . '"')
            . (strtolower($key) == $selected || (empty($selected) && $details['Support'] == 'DEFAULT')
                ? ' selected="selected"' : '') . '>' . "\n"
            . '        ' . htmlspecialchars($details['Engine']) . "\n"
            . '    </option>' . "\n";
    }
    $output .= '</select>' . "\n";
    return $output;
}

Cette sélection est remplie à partir de la requête suivante:

SHOW STORAGE ENGINES

Le code suivant sélectionne le moteur par défaut défini par le fichier de configuration MySQL:

(empty($selected) && $details['Support'] == 'DEFAULT')

Cependant, nous pouvons le changer pour qu'il sélectionne InnoDB comme moteur par défaut:

(empty($selected) && $details['Engine'] == 'InnoDB')
1
machineaddict