Repair Tabel MySQL, Incorrect Key For Table

MySQL Logo
Apabila anda mempunyai tabel MySQL yang rusak index-nya, biasanya akan menjumpai pesan errorIncorrect key file for table ‘nama tabel’; try to repair it“. Untuk meperbaikinya jalankan query berikut:

REPAIR TABLE nama_tabel USE_FRM;

Tips:
Perhatikan pesan hasil query-nya, contoh pesan “Number of rows changed from 0 to 321”, artinya record yang berhasil di-recovery sebanyak 321 baris.

Semoga bermanfaat …

Memanfaatkan FIND_IN_SET untuk menghasilkan nomor urut per group di MySQL

MySQL Logo

Langsung saja ke kasus, contoh saya mempunyai tabel di database MySQL dengan nama tabel_1 dengan isi sebagai berikut:

kelompok nama
A Adi
A Budi
A Budi
A Cici
B Beni
B Dona
B Joni
B Luki

dari tabel di atas, saya ingin mendapatkan hasil seperti berikut dengan sekali query select,

kelompok nama nom
A Adi 1
A Budi 2
A Budi 3
A Cici 4
B Beni 1
B Dona 2
B Joni 3
B Luki 4

dari hasil di atas terlihat tiap nama mendapatkan nomor urut per kelompok A dan B, dan meski ada nama yang sama tetap mendapatkan nomor urut yang unique per kelompok. Setelah utak atik berikut query select-nya:

SELECT f.kelompok,f.nama,FIND_IN_SET(CONCAT(f.nama,f.no),(SELECT GROUP_CONCAT(CONCAT(nama,nr) ORDER BY kelompok,nama) FROM (SELECT a.*,@nr:=@nr+1 AS nr FROM tabel_1 a, (SELECT @nr:=0) b ORDER BY kelompok,nama) c WHERE c.kelompok = f.kelompok )) AS nom FROM (SELECT d.kelompok,d.nama,@NO:=@NO+1 AS NO FROM tabel_1 d, (SELECT @NO:=0) e ORDER BY 1,2) f ORDER BY 1,2,3

tampak ribet dan panjang, semoga ke depan ada query yang lebih sederhana hehe, sekian dulu dan semoga bermanfaat.

Select ‘nomor baris’ record pada tabel MySQL

MySQL Logo

Terkadang saya membutuhkan nomor baris pada hasil dari sebuah Query, contoh saya mempunyai tabel seperti ini:

Nama tabel : peserta
Field : no_id, nama, nilai

saya ingin mendapatkan 5 nama dengan nilai tertinggi, hasil yang saya inginkan seperti ini

Peringkat

No_Id

Nama

Nilai

1

Z123

Rahma

98

2

A342

Reyhan

94

3

Z875

Dewi

90

4

B234

Indah

89

5

A638

Suhu

86

untuk mendapatkan 5 nilai tertinggi sepertinya mudah yaitu hanya dengan menggunakan fungsi limit dan order by. Tapi bagaimana menambahkan otomatis ‘nomor baris’ seperti kolom ‘peringkat’ pada contoh di atas ?? silahkan coba query berikut ini:

SELECT @nomor:=@nomor+1 peringkat,a.* FROM peserta a, (SELECT @nomor:=0) b ORDER BY nilai DESC LIMIT 5

selamat mencoba …

MySQL server has gone away (Error 2006) , cara mengatasinya

MySQL Logo

“MySQL server has gone away” (Error 2006), error yang baru saya jumpai. Ketika saya mau insert data sebanyak 37306 record sekaligus ke salah satu tabel MySQL, saat saya eksekusi query muncul pesan error 2006 seperti di atas. Saya sempat bingung juga sudah restart service MySQL tetap error juga. Setelah mencari solusi kesana-sini akhirnya ketemu juga cara mengatasinya. yang saya lakukan adalah mengedit konfigurasi MySQL (nama file defaultnya my.ini). Buka file my.ini dengan wordpad atau editor lainnya dan tambahkan dua baris berikut:

max_allowed_packet= 64M
wait_timeout= 6000

Setelah itu restart service mysql, dan akhirnya saya tidak menjumpai error 2006 lagi.