เทคนิค follolwing ฉันกำลังจะแสดงให้คุณเห็นว่าจะต้องมีความกล้าเหล็ก
ได้รับเกณฑ์ดังต่อไปนี้
- datadir คือ 
/var/lib/mysql 
- ตารางคือ 
mydb.mytb 
- คอลัมน์ enum เรียกว่าเรียกว่า 
enum_col 
- เอ็นจิ้นคือ MyISAM
 
นี่คือรอยแตกที่ท้าทายความตายที่:
CREATE TABLE mydb.mybt LIKE mydb.mytb;
 
ALTER TABLE mydb.mybt MODIFY enum_col ENUM('First value','Second value');
 
SET wait_timeout=86400; SET interactive_timeout=86400;
 
FLUSH TABLES WITH READ LOCK;
 
ในเซสชัน OS / SSH แยกต่างหากให้สลับไฟล์. frm
$ mv /var/lib/mysql/mydb/mytb.frm /var/lib/mysql/mydb/myxx.frm 
$ mv /var/lib/mysql/mydb/mybt.frm /var/lib/mysql/mydb/mytb.frm 
$ mv /var/lib/mysql/mydb/myxx.frm /var/lib/mysql/mydb/mybt.frm 
 
UNLOCK TABLES;
 
DROP TABLE mydb.mybt;
 
แค่นั้นแหละ !!!
ถ้ำ: ฉันไม่สามารถรับเครดิตได้!
เทคนิคนี้มาจาก"MySQL ประสิทธิภาพสูง: การเพิ่มประสิทธิภาพการสำรองข้อมูลการจำลองแบบและอื่น ๆ " หน้า 146-148ภายใต้หัวข้อย่อยการเร่งความเร็วตารางการเปลี่ยนแปลง หน้า 147 ย่อหน้าที่ 1 พูดว่า:
  เทคนิคที่เรากำลังจะสาธิตไม่ได้รับการสนับสนุนไม่มีเอกสารและอาจใช้งานไม่ได้ ใช้ความเสี่ยงของคุณ เราแนะนำให้คุณสำรองข้อมูลของคุณก่อน!
ให้มันลอง ! (โปรดแจ้งให้เราทราบว่าเปิดใช้งานอย่างไร)
อัพเดท 2011-10-05 17:49 EDT
หากตารางคือ MyISAM และคุณมีพื้นที่เพียงพอในการผลิตและหน้าต่างหยุดทำงานตรงให้ลองทำดังนี้:
service mysql restart --skip-networking
 
ใน OS / SSH Session แยกทำสำเนาของตาราง
cp /var/lib/mysql/mydb/mytb.frm /var/lib/mysql/mydb/mytbplay.frm 
cp /var/lib/mysql/mydb/mytb.MYD /var/lib/mysql/mydb/mytbplay.MYD 
cp /var/lib/mysql/mydb/mytb.MYI /var/lib/mysql/mydb/mytbplay.MYI 
 
INFORMATION_SCHEMA.TABLESจะตรวจจับการปรากฏตัวของตารางใหม่ที่เรียกmydb.mytbplayโดยอัตโนมัติ
ดำเนินการอัลกอริทึม guts-of-steel mydb.mytbplay
 
คุณทดสอบความสมบูรณ์ของ mydb.mytbplay
 
หากคุณพอใจ
ALTER TABLE mydb.mytb RENAME mydb.mytb_backup;
 
ALTER TABLE mydb.mytbplay RENAME mydb.mytb;
 
service mysql restart
 
ให้มันลอง!