Coding

Solusi Error "Could Not Find Driver" di Laravel: Panduan Lengkap

6 min read
Admin Admin

Daftar Isi

Error "could not find driver" adalah salah satu masalah umum yang sering dihadapi developer Laravel saat mencoba terhubung ke database. Error ini muncul ketika Laravel tidak dapat menemukan driver PHP yang diperlukan untuk database yang kamu gunakan. Mari kita bahas penyebab dan solusi lengkapnya!

Memahami Error "Could Not Find Driver"

Error lengkapnya biasanya terlihat seperti ini:

SQLSTATE[HY000] [2002] php_network_getaddresses: getaddrinfo failed: No such host is known.
PDOException: could not find driver

Error ini terjadi karena salah satu dari beberapa alasan berikut:

  • Ekstensi PHP untuk database driver belum diinstal atau diaktifkan
  • Konfigurasi koneksi database di file .env tidak benar
  • Ketidakcocokan antara driver yang dikonfigurasi dengan ekstensi yang tersedia
  • Masalah permission pada file konfigurasi atau direktori storage

Informasi Penting

Laravel mendukung beberapa jenis database seperti MySQL, PostgreSQL, SQLite, dan SQL Server. Setiap database memerlukan driver PHP yang sesuai untuk berfungsi dengan baik.

Artikel terkait: Hasilkan Uang dengan HTML dan CSS! 5 Cara Mudah Menghasilkan Penghasilan Tambahan Sambil Belajar Coding

Solusi Langkah demi Langkah

1. Periksa Konfigurasi Database di File .env

Langkah pertama adalah memastikan konfigurasi database di file .env sudah benar:

DB_CONNECTION=mysql
DB_HOST=127.0.0.1
DB_PORT=3306
DB_DATABASE=nama_database
DB_USERNAME=username
DB_PASSWORD=password

Pastikan:

  • DB_CONNECTION sesuai dengan driver yang ingin digunakan (mysql, pgsql, sqlite, sqlsrv)
  • DB_HOST benar (biasanya 127.0.0.1 untuk lokal atau alamat host untuk server remote)
  • DB_PORT sesuai dengan port database (MySQL: 3306, PostgreSQL: 5432)
  • DB_DATABASE, DB_USERNAME, dan DB_PASSWORD sudah benar

2. Periksa dan Aktifkan Ekstensi PHP yang Diperlukan

Setiap database memerlukan ekstensi PHP yang berbeda:

Database Ekstensi PHP yang Diperlukan
MySQL / MariaDB pdo_mysql, mysqli
PostgreSQL pdo_pgsql, pgsql
SQLite pdo_sqlite, sqlite3
SQL Server pdo_sqlsrv, sqlsrv

Untuk memeriksa ekstensi PHP yang sudah diaktifkan:

  1. Buat file phpinfo.php dengan isi:
    <?php phpinfo(); ?>
  2. Akses file tersebut melalui browser
  3. Cari bagian "PDO" dan periksa apakah driver yang kamu butuhkan sudah terdaftar
PHP Info PDO Drivers

3. Menginstal Ekstensi PHP yang Diperlukan

Di Linux (Ubuntu/Debian)

# Untuk MySQL
sudo apt-get install php-mysql

# Untuk PostgreSQL
sudo apt-get install php-pgsql

# Untuk SQLite
sudo apt-get install php-sqlite3

# Untuk SQL Server
sudo apt-get install php-sqlsrv

Setelah menginstal, restart server web:

# Untuk Apache
sudo service apache2 restart

# Untuk Nginx dengan PHP-FPM
sudo service php7.4-fpm restart
sudo service nginx restart

Di Windows dengan XAMPP/WAMP

  1. Buka file php.ini (biasanya di folder C:\xampp\php atau C:\wamp\bin\php\php7.x.x)
  2. Cari baris yang berisi ekstensi database yang dibutuhkan
  3. Hapus tanda semicolon (;) di awal baris untuk mengaktifkan ekstensi:
    ;extension=pdo_mysql → extension=pdo_mysql
    ;extension=mysqli → extension=mysqli
  4. Simpan file dan restart server

Di cPanel

  1. Login ke cPanel
  2. Cari dan klik "Select PHP Version"
  3. Di tab "Extensions", centang ekstensi yang diperlukan (pdo_mysql, mysqli, dll)
  4. Klik "Save" dan tunggu perubahan diterapkan
cPanel PHP Extensions

Perhatian

Jika menggunakan shared hosting, beberapa penyedia hosting mungkin membatasi ekstensi PHP yang dapat diaktifkan. Hubungi support hosting jika kamu tidak menemukan opsi untuk mengaktifkan ekstensi yang diperlukan.

4. Bersihkan Cache Konfigurasi Laravel

Setelah mengaktifkan ekstensi yang diperlukan, bersihkan cache konfigurasi Laravel:

Tertarik baca Integrasi SSO di Multiple Aplikasi Dalam 15 Menit! Begini Cara Mudahnya di sini.
php artisan config:clear
php artisan cache:clear

5. Verifikasi Koneksi Database

Untuk memastikan koneksi database berfungsi:

php artisan tinker

Kemudian jalankan:

Baca juga: Tutorial Lengkap Membuat Dashboard Analitik Real-time dengan React
DB::connection()->getPdo();

Jika koneksi berhasil, kamu akan melihat objek PDO. Jika masih error, pesan error akan memberikan petunjuk lebih lanjut tentang masalahnya.

Solusi Khusus Berdasarkan Database

MySQL / MariaDB

  1. Pastikan ekstensi pdo_mysql dan mysqli sudah diaktifkan
  2. Verifikasi host dan port database (biasanya 127.0.0.1:3306 untuk lokal)
  3. Pastikan user database memiliki izin yang cukup
  4. Jika menggunakan socket, periksa path socket di php.ini

PostgreSQL

  1. Pastikan ekstensi pdo_pgsql dan pgsql sudah diaktifkan
  2. Verifikasi host dan port database (biasanya 127.0.0.1:5432)
  3. Periksa konfigurasi pg_hba.conf untuk izin koneksi
  4. Pastikan schema yang benar digunakan (default: public)

SQLite

  1. Pastikan ekstensi pdo_sqlite dan sqlite3 sudah diaktifkan
  2. Verifikasi path file database SQLite di .env:
    DB_CONNECTION=sqlite
    DB_DATABASE=/absolute/path/to/database.sqlite
  3. Pastikan file database SQLite ada dan dapat diakses
  4. Periksa permission file database (harus dapat dibaca dan ditulis oleh web server)

SQL Server

  1. Pastikan ekstensi pdo_sqlsrv dan sqlsrv sudah diaktifkan
  2. Untuk Windows, install Microsoft ODBC Driver for SQL Server
  3. Untuk Linux, install Microsoft SQL Server Driver for PHP
  4. Verifikasi konfigurasi di .env:
    DB_CONNECTION=sqlsrv
    DB_HOST=127.0.0.1
    DB_PORT=1433
    DB_DATABASE=database
    DB_USERNAME=username
    DB_PASSWORD=password

Kasus Khusus dan Solusinya

1. Error pada Laravel Sail / Docker

Jika kamu menggunakan Laravel Sail atau Docker:

  1. Pastikan service database sudah berjalan:
    sail ps atau docker-compose ps
  2. Periksa konfigurasi di docker-compose.yml
  3. Untuk MySQL di Docker, gunakan host mysql (bukan localhost) di .env:
    DB_HOST=mysql

Tips

Ketika menggunakan Docker, nama host database harus sesuai dengan nama service di docker-compose.yml, bukan localhost atau 127.0.0.1.

2. Error pada Shared Hosting

Pada shared hosting, masalah umum adalah:

  1. Ekstensi PHP tidak diaktifkan - Gunakan panel kontrol hosting untuk mengaktifkan
  2. Database remote - Pastikan host dan port database benar
  3. Batasan koneksi - Beberapa hosting membatasi koneksi database

3. Error pada Deployment Production

Saat deploy ke production:

  1. Pastikan file .env ada dan berisi konfigurasi yang benar
  2. Periksa firewall server - pastikan port database tidak diblokir
  3. Verifikasi kredensial database untuk environment production
  4. Jalankan php artisan config:cache setelah mengubah konfigurasi

Penting!

Jangan lupa untuk mengatur permission yang benar pada file .env di server production. File ini harus dapat dibaca oleh web server tapi tidak dapat diakses publik.

Checklist Troubleshooting

Gunakan checklist ini untuk memastikan semua aspek sudah diperiksa:

Langkah Sudah Diperiksa
Konfigurasi database di .env sudah benar
Ekstensi PHP yang diperlukan sudah diaktifkan
Server database berjalan dan dapat diakses
User database memiliki izin yang cukup
Cache konfigurasi Laravel sudah dibersihkan
File .env ada dan dapat dibaca
Firewall tidak memblokir koneksi database

Kesimpulan

Error "could not find driver" biasanya mudah diatasi dengan mengaktifkan ekstensi PHP yang sesuai dan memastikan konfigurasi database sudah benar. Langkah-langkah di atas seharusnya menyelesaikan mayoritas kasus error ini.

Jika kamu masih mengalami masalah setelah mencoba semua solusi di atas, pertimbangkan untuk:

  • Memeriksa log error PHP dan Laravel untuk informasi lebih detail
  • Mencoba driver database alternatif jika memungkinkan
  • Konsultasi dengan penyedia hosting jika menggunakan shared hosting
  • Mencari bantuan di forum komunitas Laravel atau Stack Overflow

Dengan pemahaman yang tepat tentang cara kerja koneksi database di Laravel dan ekstensi PHP yang diperlukan, kamu akan dapat mengatasi error "could not find driver" dengan cepat dan efisien di masa mendatang.