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

28

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?

Kaji
la source
Peut-être que ce n'est pas tellement PHPMyAdmin mais MySQL directement. Avez-vous essayé ceci: - stackoverflow.com/questions/2286813/…
Sebastian Roth
2
Il est possible en procédant comme suit: accédez à> phpmyadmin -> plus -> variables -> moteur de stockage et changez-le MyISAM en InnoDB.
@ user21380: c'est là que vous pouvez voir UNIQUEMENT quel moteur MySQL utilise.
machineaddict

Réponses:

21

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

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

BenV
la source
2
UPDATE `GLOBAL_VARIABLES` 
SET `VARIABLE_VALUE`="InnoDB" 
WHERE `VARIABLE_NAME`="DEFAULT_STORAGE_ENGINE"
Owen Parker
la source
2
database: information_schema
Owen Parker
1

Cette réponse est un peu tardive, 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 StorageEngine.class.phpdans les librariesdossiers (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')
machineaddict
la source