it-swarm.asia

Bagaimana saya bisa mengubah mesin penyimpanan default di phpmyadmin?

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?

28
Kaji

Anda harus menambahkan baris default-storage-engine = InnoDB di bawah [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.

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

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 bawah StorageEngine.class.php dalam libraries folder (dalam 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, kami dapat mengubahnya untuk membuatnya memilih InnoDB sebagai mesin default:

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