Monday, June 18, 2012

Tips cara aman hapus database MySQL (for dummies)

Lohaaaaaa.. Lama gak update blogspotku tercinta ini. Oh iya, FYI, nin sudah punya website pribadi sekarang. Cek di http://ninasuhari.web.id yah! Isinya masih kosong melompong sih (tampak luar), karena memang cuma dipake dibelakang layar buat uji coba sistem informasi yang sedang nin buat untuk skripsi nin.

Nah, berhubungan dengan masalah sistem informasi ini, ngegodok scriptnya masih uji coba di localhost (alias di laptop sendiri - offline tentunya) dan sesekali di lempar ke server untuk diliat uji kinerja. Kesulitan nin temui ketika harus merombak database yang ada diserver karena udah beda jauh dengan database di localhost.

Kesulitan terbesarnya waktu menghapus beberapa tabel yang masih punya link / references dengan tabel lainnya sebagai tabel induk. Kenapa nin buat references? Ya karena kalo update dan delete data akan lebih mudah dan tetap terjaga integritas datanya (ceile, integritas apaan yah, pokoknya datanya tetep update gitu). Database MySQL yang menggunakan integrasi references hanya bisa didapat ketika menggunakan engine InnoDB. Dengan ini, ketika data di tabel induk dihapus, akan ada action tertentu sesuai dengan kebutuhan kita seperti apakah data di tabel references akan ikut terhapus, di kosongkan ataupun aksinya akan dilarang / restrict (siapa tau kan gak sengaja kehapus data yang vital).

Waktu nin terapkan bahwa ketika data induk dihapus maka data yang ada di tabel references akan ikut terhapus. Nah, siyal nya kemaren, tanpa pikir panjang saat akan menghapus tabel yang ada di dalam database server nin lakukan dengan serentak (baik itu tabel dan beberapa view), alhasil ada beberapa tabel yang tidak bisa terhapus karena terbentur aturan tadi, tabel itu adalah beberapa tabel yang punya hubungan induk dan reference nya.

Beberapa kali nin utak-atik untuk menghapus tabel yang membandel ini, mulai dari mengosongkan isinya, trus menghapus relasi reference nya. Setelah segala cara dipakai, akhirnya baru paham kalo MySQL benar-benar menjaga integritas datanya jika menggunakan aturan di engine InnoDB. Keren banget.

Jadi, biar besok-besok gak capek mesti ngutak-ngatik database yang tabel-tabelnya gagal terhapus saat di drop massal, hapus dulu tabel-tabel reference yang mengambil eksitensi data yang ada di tabel induk. Habis itu baru deh dibasmi semua tabel induknya. Gak bakal ada masalah lagi deh. Oh iya, kalo di databasenya ternyata ada view, sebelum menghapus tabel reference, hapus dulu tabel view yang sangat bergantung pada tabel-tabel yang ditampilkan oleh view.

Sekian tips dari mahasiswidudul kali ini. Salam dummies :D