Mysql

如何更改 phpmyadmin 中的預設儲存引擎?

  • November 8, 2020

我幾乎只在我的應用程序中使用 InnoDB。但是,如果我在設置表格時不小心,我會忘記更改它,並且 phpmyadmin 會使用 MyISAM。有沒有辦法更改預設儲存引擎?

您必須在mysql 配置文件(my.cnf 或 my.ini 取決於您的作業系統)部分 default-storage-engine = InnoDB下添加該行並重新啟動 mysqld 服務。[mysqld]

我不相信你可以通過 PhpMyAdmin 來改變它。

這個答案有點晚了,但它可能對其他人有所幫助。如果您害怕在 MySQL 伺服器上搞砸,您可以在從 phpMyAdmin 創建表時更改預設引擎。MySQL 引擎的預設選擇創建者是文件夾下StorageEngine.class.php的這個函式libraries(在 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;
}

此選擇由以下查詢填充:

SHOW STORAGE ENGINES

以下程式碼選擇 MySQL 配置文件設置的預設引擎:

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

但是,我們可以更改它以使其選擇 InnoDB 作為預設引擎:

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

引用自:https://dba.stackexchange.com/questions/96