¿Cómo puedo cambiar el motor de almacenamiento predeterminado en phpmyadmin?

28

Yo uso InnoDB casi exclusivamente en mis aplicaciones. Sin embargo, si no tengo cuidado al configurar la mesa, me olvido de cambiarla y phpmyadmin me pega con MyISAM. ¿Hay alguna manera de cambiar el motor de almacenamiento predeterminado?

Kaji
fuente
Tal vez no se trata tanto de PHPMyAdmin sino de MySQL directamente. ¿Has probado esto ?: stackoverflow.com/questions/2286813/…
Sebastian Roth
2
Es posible siguiendo estos pasos: navegue hasta> phpmyadmin -> más -> variables -> motor de almacenamiento y cámbielo MyISAM a InnoDB.
@ user21380: ahí es donde SOLO puedes ver qué motor está usando MySQL.
machineaddict

Respuestas:

21

Debe agregar la línea default-storage-engine = InnoDBdebajo de la [mysqld]sección de su archivo de configuración de mysql (my.cnf o my.ini dependiendo de su sistema operativo) y reiniciar el servicio mysqld.

No creo que pueda cambiar esto a través de PhpMyAdmin.

BenV
fuente
2
UPDATE `GLOBAL_VARIABLES` 
SET `VARIABLE_VALUE`="InnoDB" 
WHERE `VARIABLE_NAME`="DEFAULT_STORAGE_ENGINE"
Owen Parker
fuente
2
base de datos: información_esquema
Owen Parker
1

Esta respuesta llega tarde, pero podría ayudar a otros. Si tiene miedo de estropear algo en el servidor MySQL, puede cambiar el motor predeterminado al crear una tabla desde phpMyAdmin. El creador de selección predeterminado para los motores MySQL es esta función StorageEngine.class.phpen librariescarpetas (en 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;
}

Esta selección se completa a partir de la siguiente consulta:

SHOW STORAGE ENGINES

El siguiente código selecciona el motor predeterminado establecido por el archivo de configuración de MySQL:

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

Sin embargo, podemos cambiarlo para que seleccione InnoDB como motor predeterminado:

(empty($selected) && $details['Engine'] == 'InnoDB')
máquina
fuente