Wednesday, August 08, 2007

Got error 127 from table handler

Minggu ini kebetulan aku kebagian kerjaan untuk melakukan suatu operasi pada suatu tabel di MySQL. Operasinya cukup sederhana. Pada tabel tersebut, akan dilakukan operasi penghapusan sesuai dengan data-data yang berada pada tabel lain. Berhubung operasi ini melibatkan data yang jumlahnya lumayan banyak - dan karena tabel ini digunakan untuk production, maka untuk berjaga-jaga tabel tersebut harus dibackup terlebih dulu.

Menurutku, cara yang paling mudah untuk melakukan backup adalah dengan membuat salinan tabel tersebut. Yang paling gampang adalah membuat tabel baru yang strukturnya sama dengan tabel sebelumnya, lalu kemudian datanya disalin dengan menggunakan perintah seperti berikut :

INSERT INTO tabel2 SELECT * FROM tabel1;

Seharusnya perintah tersebut dapat dieksekusi dengan benar. Namun, yang terjadi adalah kebalikannya. Setelah menunggu agak lama, muncul pesan error: ERROR 1030: Got error 127 from table handler. Walaupun terjadi error, sebagian data berhasil disalin. Hanya sekitar 200 ribu row data yang tidak berhasil disalin.

Kemudian, aku mencoba cara selanjutnya, yaitu menggunakan perintah mysqldump pada shell. Dan anehnya, cara ini pun gagal. Hanya sebagian data yang berhasil di dump. Dan sekitar 200 ribu row data yang tidak berhasil di dump. Jumlahnya sama persis dengan cara sebelumnya.

Setelah melakukan googling, ternyata diketahui bahwa error 127 disebabkan karena ada bug pada MySQL 4.0.17 yang kebetulan versinya sama dengan yang sedang aku gunakan. Dan konon katanya bug ini sudah dihilangkan pada versi 4.0.18 keatas. Tetapi bisa juga pesan error tersebut muncul karena tabelnya korup.

Jika menggunakan asumsi yang pertama, memang ada bug pada versi 4.0.17, gimana mau melakukan upgrade ke versi yang lebih baru, sementara data-datanya tidak bisa dibackup terlebih dulu. Benar-benar aneh nih jadinya. Dan akhirnya, kerjaanku pun nggak selesai, malah nambah kerjaan baru :P. Ada solusi?

0 comments: