Error & Pesan Kesalahan
SQL
Pesan error yang paling sering muncul saat menulis atau menjalankan query SQL, beserta penyebab dan cara menelusurinya.
Syntax Error
Muncul ketika struktur penulisan sebuah query tidak sesuai dengan aturan tata bahasa SQL, seperti tanda baca yang hilang atau kata kunci yang salah letak.
Lupa menambahkan tanda kutip pada nilai teks, salah urutan klausa, atau tanda kurung yang tidak seimbang.
Periksa kembali query baris demi baris, khususnya bagian yang ditunjuk oleh pesan error, dan pastikan setiap tanda kutip serta tanda kurung memiliki pasangannya.
Column "nama_kolom" does not exist
Muncul ketika query merujuk pada nama kolom yang tidak ditemukan pada tabel yang dipakai.
Kesalahan pengetikan nama kolom, atau kolom tersebut sebenarnya berada di tabel lain yang belum digabungkan melalui JOIN.
Periksa kembali ejaan nama kolom, dan pastikan tabel yang memuat kolom tersebut sudah benar dirujuk atau digabungkan dalam query.
Relation "nama_tabel" does not exist
Muncul ketika query merujuk pada nama tabel yang tidak ditemukan dalam database yang sedang diakses.
Kesalahan pengetikan nama tabel, atau sedang terhubung ke database maupun skema yang salah.
Periksa kembali ejaan nama tabel, dan pastikan koneksi database sudah mengarah ke skema yang benar.
Column reference is ambiguous
Muncul ketika sebuah nama kolom yang dirujuk dalam query ternyata ada pada lebih dari satu tabel yang digabungkan, tanpa dijelaskan tabel mana yang dimaksud.
Menggabungkan dua tabel yang memiliki nama kolom sama, seperti id_pelanggan, tanpa menuliskan awalan nama tabel di depan kolom tersebut.
Tambahkan nama tabel atau alias di depan nama kolom, misalnya pelanggan.id_pelanggan, agar SQL mengetahui kolom dari tabel mana yang dimaksud.
Kolom Harus Muncul di GROUP BY
Muncul ketika sebuah kolom dituliskan pada SELECT tanpa fungsi agregasi, namun tidak ikut dituliskan pada klausa GROUP BY.
Menuliskan kolom tambahan pada SELECT setelah menggunakan GROUP BY, namun lupa menyertakan kolom tersebut ke dalam daftar GROUP BY.
Pastikan setiap kolom pada SELECT yang tidak dibungkus fungsi agregasi juga dituliskan pada klausa GROUP BY.
Division by Zero
Muncul ketika sebuah operasi dalam query mencoba membagi suatu nilai dengan angka nol.
Menghitung rata-rata atau rasio pada kelompok data yang jumlah pembaginya kebetulan bernilai nol.
Gunakan fungsi kondisional seperti CASE WHEN atau NULLIF untuk menghindari pembagian dengan nol sebelum operasi dijalankan.
Data Type Mismatch
Muncul ketika sebuah operasi atau perbandingan dilakukan antara dua tipe data yang tidak sesuai, misalnya membandingkan teks dengan angka.
Kolom yang seharusnya bertipe angka tersimpan sebagai teks, sehingga perbandingan atau perhitungan menjadi tidak valid.
Konversi tipe data kolom yang bermasalah menggunakan fungsi konversi tipe data yang sesuai sebelum dipakai dalam operasi.
Null Value Violates Not-Null Constraint
Muncul ketika mencoba memasukkan data baru dengan nilai kosong pada kolom yang diwajibkan selalu terisi.
Data yang dimasukkan tidak menyertakan nilai untuk kolom yang sudah ditentukan sebagai wajib diisi saat tabel dibuat.
Pastikan data yang dimasukkan menyertakan nilai untuk seluruh kolom yang bersifat wajib.
Duplicate Key Violates Unique Constraint
Muncul ketika mencoba memasukkan data baru dengan nilai Primary Key yang sudah ada sebelumnya di tabel yang sama.
Mencoba menambahkan baris data dengan identitas unik yang kebetulan sama dengan data yang sudah tersimpan.
Periksa kembali nilai Primary Key yang akan dimasukkan, pastikan benar-benar belum pernah dipakai sebelumnya pada tabel tersebut.
Cartesian Product (Hasil JOIN Meledak)
Bukan pesan error, melainkan kondisi ketika jumlah baris hasil query membengkak jauh melebihi ekspektasi, biasanya akibat JOIN tanpa klausa ON yang tepat atau relasi banyak-ke-banyak yang tidak disadari.
Menuliskan JOIN tanpa kondisi penghubung yang benar, sehingga setiap baris tabel pertama dipasangkan dengan seluruh baris tabel kedua.
Periksa kembali klausa ON pada setiap JOIN, dan hitung ulang perkiraan jumlah baris yang wajar sebelum menjalankan query pada data berskala besar.
Query Timeout / Execution Exceeded
Muncul ketika sebuah query berjalan terlalu lama hingga melampaui batas waktu yang ditetapkan sistem, sehingga dihentikan secara paksa sebelum selesai.
Query memproses tabel berukuran sangat besar tanpa filter yang memadai, atau terjadi JOIN yang menghasilkan Cartesian Product.
Tambahkan filter WHERE untuk mempersempit data yang diproses, periksa penggunaan index, atau gunakan EXPLAIN untuk menelusuri rencana eksekusi query.
Permission Denied for Relation
Muncul ketika pengguna yang menjalankan query tidak memiliki hak akses terhadap tabel yang dirujuk.
Akun yang digunakan belum diberikan izin baca pada tabel atau skema tertentu oleh administrator database.
Hubungi administrator database untuk memastikan akun yang digunakan telah diberikan hak akses yang sesuai pada tabel yang dituju.