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.

[PHP dan MySQL] Membuat File Koneksi Terpisah

mysql dan php

Saya ingin berbagi catatan tentang PHP dengan database MySQL, ke depan jika ada waktu luang Insya Allah saya akan coba sambung catatan saya tentang PHP dan MySQL. Di sini saya tidak akan banyak membahas fungsi-fungsi dalam PHP, untuk referensi lengkapnya bisa di pelajari di http://www.w3schools.com/php/. Catatan saya akan lebih banyak tentang contoh-contoh penggunaanya saja. Contoh kali ini adalah bagaimana membuat file koneksi untuk koneksi ke database MySQL.

Let’s start, untuk bisa mengakses ke database MySQL kita perlu membuat dulu koneksi ke server. Artinya setiap kali kita akan mengolah data, kita perlu melakukan koneksi. Nah, script koneksi ke database sebaiknya dibuat terpisah dalam file tersendiri. Kenapa? karena jika kita berpindah-pindah server dengan user dan password database yang berbeda, kita cukup merubah user dan password pada file ini. Sebagai contoh jika kita upload ke web hosting yang mungkin user dan password database ditentukan oleh web hosting. Oke, saya akan membuat file dengan nama koneksi.php, scriptnya adalah sebagai berikut:

<?php
$server = 'localhost';
$username = 'root';
$password = 'toor';
$database = 'db_latihan';

//koneksi ke database
mysql_connect($server, $username, $password) or die('koneksi gagal');
mysql_select_db($database) or die('unknown data base');
?>

Untuk file php lain yang membutuhkan koneksi ke database, kita cukup sisipkan script ke dalam file php tersebut sebagai berikut:

include "../config/koneksi.php"; //contoh saya simpan di folder config

Sekian dulu, thanks for reading.

Koneksi Java ke MySQL dengan JDBC

Berikut contoh class koneksi Java ke database MySQL menggunakan JDBC. Sebelumnya import library MySQL JDBC Driver ke project. Apabila menggunakan NetBean IDE, caranya adalah klik kanan pada Libraries > pilih Add Library… (gambar 1). Setelah itu baru buat java class dengan nama DatabaseConnection, berikut source codenya:

package controller;

import com.mysql.jdbc.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;

/**
 * @about : class untuk koneksi ke database MySQL dengan JDBC
 */
public class DatabaseConnection {

    private Connection con = null;
    private static DatabaseConnection dbcon = null;
    static final String DB_URL = "jdbc:mysql://localhost:3306/latihan";
    static final String DB_USER = "root";
    static final String DB_PASS = "";

    // constructor
    public DatabaseConnection() {
        if (con == null) {
            try {
                // loading driver
                Class.forName("com.mysql.jdbc.Driver").newInstance();
                // connect ke database
                con = (Connection) DriverManager.getConnection(DB_URL, DB_USER, DB_PASS);
                System.out.println("Koneksi Berhasil");
            } catch (Exception ex) {
                System.out.println("Koneksi Gagal");
            }
        }
    }

    // mengecek apakah sudah ada koneksi
    public static DatabaseConnection getInstance() {
        DatabaseConnection con = null;
        if (dbcon == null) {
            dbcon = new DatabaseConnection();
            con = dbcon;
        } else {
            con = dbcon;
        }
        return con;
    }

    public Connection getCon() throws SQLException {
        return this.con;
    }
}

Sekarang kita bisa panggil class tersebut pada class lain, contohnya buat java class dengan nama TesConnection, berikut contoh source codenya:

package controller;

import java.sql.Connection;
import java.sql.SQLException;
import java.util.logging.Level;
import java.util.logging.Logger;

/**
 * @about : coba koneksi
 */
public class TestConnection {

    public static void main(String[] args) {
        DatabaseConnection koneksi = DatabaseConnection.getInstance();
        try {
            Connection con = koneksi.getCon();
        } catch (SQLException ex) {
            Logger.getLogger(TestConnection.class.getName()).log(Level.SEVERE, null, ex);
        }
    }
}

selamat mencoba …

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.