Tôi sử dụng InnoDB gần như độc quyền trong các ứng dụng của mình. Tuy nhiên, nếu tôi không cẩn thận khi thiết lập bảng, tôi quên thay đổi nó và phpmyadmin gắn bó tôi với MyISAM. Có cách nào để thay đổi công cụ lưu trữ mặc định?
Tôi sử dụng InnoDB gần như độc quyền trong các ứng dụng của mình. Tuy nhiên, nếu tôi không cẩn thận khi thiết lập bảng, tôi quên thay đổi nó và phpmyadmin gắn bó tôi với MyISAM. Có cách nào để thay đổi công cụ lưu trữ mặc định?
Câu trả lời:
UPDATE `GLOBAL_VARIABLES`
SET `VARIABLE_VALUE`="InnoDB"
WHERE `VARIABLE_NAME`="DEFAULT_STORAGE_ENGINE"
Câu trả lời này là loại muộn, nhưng nó có thể giúp đỡ người khác. Nếu bạn sợ làm hỏng thứ gì đó trên máy chủ MySQL, bạn có thể thay đổi công cụ mặc định khi tạo bảng từ phpMyAdmin. Trình tạo chọn mặc định cho các công cụ MySQL là chức năng này StorageEngine.class.php
trong libraries
các thư mục (trong 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;
}
Lựa chọn này được điền từ truy vấn sau:
SHOW STORAGE ENGINES
Đoạn mã sau đang chọn công cụ mặc định được đặt bởi tệp cấu hình MySQL:
(empty($selected) && $details['Support'] == 'DEFAULT')
Tuy nhiên, chúng ta có thể thay đổi nó để làm cho nó chọn InnoDB làm công cụ mặc định:
(empty($selected) && $details['Engine'] == 'InnoDB')