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.
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
, danDB_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:
- Buat file
phpinfo.php
dengan isi:<?php phpinfo(); ?>
- Akses file tersebut melalui browser
- Cari bagian "PDO" dan periksa apakah driver yang kamu butuhkan sudah terdaftar
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
- Buka file
php.ini
(biasanya di folder C:\xampp\php atau C:\wamp\bin\php\php7.x.x) - Cari baris yang berisi ekstensi database yang dibutuhkan
- Hapus tanda semicolon (;) di awal baris untuk mengaktifkan ekstensi:
;extension=pdo_mysql → extension=pdo_mysql
;extension=mysqli → extension=mysqli - Simpan file dan restart server
Di cPanel
- Login ke cPanel
- Cari dan klik "Select PHP Version"
- Di tab "Extensions", centang ekstensi yang diperlukan (pdo_mysql, mysqli, dll)
- Klik "Save" dan tunggu perubahan diterapkan
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:
php artisan config:clear
php artisan cache:clear
5. Verifikasi Koneksi Database
Untuk memastikan koneksi database berfungsi:
php artisan tinker
Kemudian jalankan:
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
- Pastikan ekstensi
pdo_mysql
danmysqli
sudah diaktifkan - Verifikasi host dan port database (biasanya 127.0.0.1:3306 untuk lokal)
- Pastikan user database memiliki izin yang cukup
- Jika menggunakan socket, periksa path socket di php.ini
PostgreSQL
- Pastikan ekstensi
pdo_pgsql
danpgsql
sudah diaktifkan - Verifikasi host dan port database (biasanya 127.0.0.1:5432)
- Periksa konfigurasi pg_hba.conf untuk izin koneksi
- Pastikan schema yang benar digunakan (default: public)
SQLite
- Pastikan ekstensi
pdo_sqlite
dansqlite3
sudah diaktifkan - Verifikasi path file database SQLite di .env:
DB_CONNECTION=sqlite
DB_DATABASE=/absolute/path/to/database.sqlite - Pastikan file database SQLite ada dan dapat diakses
- Periksa permission file database (harus dapat dibaca dan ditulis oleh web server)
SQL Server
- Pastikan ekstensi
pdo_sqlsrv
dansqlsrv
sudah diaktifkan - Untuk Windows, install Microsoft ODBC Driver for SQL Server
- Untuk Linux, install Microsoft SQL Server Driver for PHP
- 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:
- Pastikan service database sudah berjalan:
sail ps
ataudocker-compose ps
- Periksa konfigurasi di docker-compose.yml
- 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:
- Ekstensi PHP tidak diaktifkan - Gunakan panel kontrol hosting untuk mengaktifkan
- Database remote - Pastikan host dan port database benar
- Batasan koneksi - Beberapa hosting membatasi koneksi database
3. Error pada Deployment Production
Saat deploy ke production:
- Pastikan file .env ada dan berisi konfigurasi yang benar
- Periksa firewall server - pastikan port database tidak diblokir
- Verifikasi kredensial database untuk environment production
- 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.