Bagaimana saya bisa mengubah mesin penyimpanan default di phpmyadmin?

28

Saya menggunakan InnoDB hampir secara eksklusif di aplikasi saya. Namun, jika saya tidak berhati-hati saat mengatur tabel, saya lupa untuk mengubahnya dan phpmyadmin menempel saya dengan MyISAM. Apakah ada cara untuk mengubah mesin penyimpanan default?

Kaji
sumber
Mungkin ini bukan tentang PHPMyAdmin tetapi MySQL secara langsung. Sudahkah Anda mencoba ini: - stackoverflow.com/questions/2286813/…
Sebastian Roth
2
Hal ini dimungkinkan dengan melakukan langkah-langkah ini: arahkan ke> phpmyadmin -> more -> variable -> mesin penyimpanan dan ubah MyISAM ke InnoDB.
@ user21380: di situlah Anda HANYA dapat melihat mesin apa yang digunakan MySQL.
machineaddict

Jawaban:

21

Anda harus menambahkan baris di default-storage-engine = InnoDBbawah [mysqld]bagian file konfigurasi mysql Anda (my.cnf atau my.ini tergantung pada sistem operasi Anda) dan restart layanan mysqld.

Saya tidak percaya Anda bisa mengubahnya melalui PhpMyAdmin.

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

Jawaban ini agak terlambat, tetapi mungkin membantu orang lain. Jika Anda takut mengacaukan sesuatu di server MySQL, Anda dapat mengubah mesin default saat membuat tabel dari phpMyAdmin. Pembuat pilih default untuk mesin MySQL adalah fungsi ini di StorageEngine.class.phpdalam librariesfolder (di 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;
}

Pilihan ini diisi dari kueri berikut:

SHOW STORAGE ENGINES

Kode berikut memilih mesin default yang ditetapkan oleh file konfigurasi MySQL:

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

Namun, kita dapat mengubahnya untuk membuatnya memilih InnoDB sebagai mesin default:

(empty($selected) && $details['Engine'] == 'InnoDB')
tambahan mesin
sumber