ฉันใช้ InnoDB เกือบทั้งหมดในแอปพลิเคชันของฉัน อย่างไรก็ตามถ้าฉันไม่ระวังเมื่อทำการตั้งค่าตารางฉันลืมที่จะเปลี่ยนและ phpmyadmin เกาะติดฉันด้วย MyISAM มีวิธีในการเปลี่ยนเอ็นจิ้นการจัดเก็บข้อมูลเริ่มต้นหรือไม่?
ฉันใช้ InnoDB เกือบทั้งหมดในแอปพลิเคชันของฉัน อย่างไรก็ตามถ้าฉันไม่ระวังเมื่อทำการตั้งค่าตารางฉันลืมที่จะเปลี่ยนและ phpmyadmin เกาะติดฉันด้วย MyISAM มีวิธีในการเปลี่ยนเอ็นจิ้นการจัดเก็บข้อมูลเริ่มต้นหรือไม่?
คำตอบ:
คุณต้องเพิ่มบรรทัดdefault-storage-engine = InnoDB
ใต้[mysqld]
ส่วนของไฟล์ปรับแต่ง mysql ของคุณ (my.cnf หรือ my.ini ขึ้นอยู่กับระบบปฏิบัติการของคุณ) และเริ่มบริการ mysqld ใหม่
ฉันไม่เชื่อว่าคุณสามารถเปลี่ยนแปลงสิ่งนี้ผ่าน PhpMyAdmin
UPDATE `GLOBAL_VARIABLES`
SET `VARIABLE_VALUE`="InnoDB"
WHERE `VARIABLE_NAME`="DEFAULT_STORAGE_ENGINE"
คำตอบนี้สายเกินไป แต่อาจช่วยคนอื่นได้ หากคุณกลัวที่จะทำสิ่งสกปรกบนเซิร์ฟเวอร์ 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')