Como posso alterar o mecanismo de armazenamento padrão no phpmyadmin?

28

Eu uso o InnoDB quase exclusivamente em meus aplicativos. No entanto, se eu não for cuidadoso ao configurar a mesa, esqueço de alterá-lo e o phpmyadmin me adere ao MyISAM. Existe uma maneira de alterar o mecanismo de armazenamento padrão?

Kaji
fonte
Talvez não seja tanto o PHPMyAdmin, mas o MySQL diretamente. Você já tentou isso: - stackoverflow.com/questions/2286813/…
Sebastian Roth
2
É possível executando estas etapas: navegue para> phpmyadmin -> mais -> variáveis ​​-> mecanismo de armazenamento e altere-o MyISAM para InnoDB.
@ user21380: é onde você pode ver SOMENTE qual mecanismo o MySQL está usando.
precisa

Respostas:

21

Você precisa adicionar a linha default-storage-engine = InnoDBna [mysqld]seção do seu arquivo de configuração do mysql (my.cnf ou my.ini, dependendo do seu sistema operacional) e reiniciar o serviço mysqld.

Não acredito que você possa mudar isso através do PhpMyAdmin.

BenV
fonte
2
UPDATE `GLOBAL_VARIABLES` 
SET `VARIABLE_VALUE`="InnoDB" 
WHERE `VARIABLE_NAME`="DEFAULT_STORAGE_ENGINE"
Owen Parker
fonte
2
banco de dados: information_schema
Owen Parker
1

Essa resposta é meio tarde, mas pode ajudar os outros. Se você tem medo de atrapalhar algo no servidor MySQL, pode alterar o mecanismo padrão ao criar uma tabela a partir do phpMyAdmin. O criador de seleção padrão para os mecanismos MySQL é esta função StorageEngine.class.phpnas librariespastas (no 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;
}

Essa seleção é preenchida a partir da seguinte consulta:

SHOW STORAGE ENGINES

O código a seguir está selecionando o mecanismo padrão definido pelo arquivo de configuração do MySQL:

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

No entanto, podemos alterá-lo para fazê-lo selecionar o InnoDB como o mecanismo padrão:

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