> For the complete documentation index, see [llms.txt](https://learn.devlabss.my.id/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://learn.devlabss.my.id/laravel/bab-5-migration-and-seeder/5.6-mengatasi-error-gagal-koneksi.md).

# 5.6 Mengatasi Error Gagal Koneksi

## Mengatasi error gagal koneksi

Saat menjalankan migration atau seeder, Laravel harus terhubung ke MySQL.

Jika koneksi gagal, terminal biasanya menampilkan pesan seperti:

* `SQLSTATE[HY000] [2002] Connection refused`
* `SQLSTATE[HY000] [1045] Access denied for user`
* `SQLSTATE[42000] [1049] Unknown database`

Error ini tidak berarti kode Laravel Anda rusak.

Biasanya, masalah ada di server MySQL atau konfigurasi `.env`.

### Data yang dibutuhkan Laravel

Agar koneksi berhasil, Laravel membutuhkan informasi yang tepat:

* host database
* port database
* nama database
* username dan password

Jika salah satu nilainya tidak cocok, koneksi akan gagal.

### Urutan pengecekan yang paling aman

Gunakan urutan ini setiap kali error koneksi muncul.

{% stepper %}
{% step %}

### Pastikan MySQL aktif

Buka **Laragon** lalu klik **Start All**.

Pastikan servis **MySQL** benar-benar berjalan.
{% endstep %}

{% step %}

### Periksa file `.env`

Pastikan konfigurasi database sesuai dengan server lokal Anda.

Contoh yang paling umum:

```env
DB_CONNECTION=mysql
DB_HOST=127.0.0.1
DB_PORT=3306
DB_DATABASE=e_library
DB_USERNAME=root
DB_PASSWORD=
```

Jika Laragon memakai port lain, samakan nilai `DB_PORT`.
{% endstep %}

{% step %}

### Bersihkan cache konfigurasi

Setelah mengubah `.env`, jalankan:

```bash
php artisan config:clear
```

Laravel bisa menyimpan konfigurasi lama di cache.
{% endstep %}

{% step %}

### Uji kembali koneksi

Setelah itu, jalankan lagi:

```bash
php artisan migrate
```

Lihat pesan error terbaru jika masih gagal.
{% endstep %}
{% endstepper %}

{% hint style="warning" %}
Jika Anda baru mengubah file `.env`, selalu jalankan `php artisan config:clear` sebelum mencoba lagi.
{% endhint %}

### Error `Connection refused` atau `[2002]`

Error ini berarti Laravel belum berhasil mencapai server MySQL.

Penyebab yang paling sering:

* MySQL belum aktif di **Laragon**
* nilai `DB_PORT` tidak sesuai
* PHP yang dipakai tidak memiliki `pdo_mysql`

Contoh pesan yang sering muncul:

```
SQLSTATE[HY000] [2002] Connection refused
```

atau:

```
An extension is required for this feature: pdo_mysql
```

Cara memperbaikinya:

1. pastikan **MySQL** di **Laragon** sudah aktif
2. cek port MySQL yang sedang dipakai
3. samakan nilai `DB_PORT` di `.env`
4. jalankan `php artisan config:clear`

Jika muncul error `pdo_mysql`, biasanya terminal memakai PHP yang berbeda.

Pada instalasi Laragon normal, ekstensi ini biasanya sudah aktif.

### Error `Access denied for user` atau `[1045]`

Error ini berarti Laravel berhasil menemukan MySQL, tetapi kredensialnya ditolak.

Contoh pesan:

```
SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost'
```

Penyebab yang paling sering:

* `DB_USERNAME` salah
* `DB_PASSWORD` salah
* password diisi padahal server lokal tidak memakainya

Untuk setelan lokal Laragon yang umum, gunakan:

```env
DB_USERNAME=root
DB_PASSWORD=
```

Perhatikan baris `DB_PASSWORD=`.

Tidak ada isi setelah tanda sama dengan.

Jika Anda menulis `root`, `12345`, atau nilai lain, koneksi bisa ditolak.

### Error `Unknown database` atau `[1049]`

Error ini berarti MySQL aktif, tetapi nama database yang dicari tidak ada.

Contoh pesan:

```
SQLSTATE[42000] [1049] Unknown database 'e_library'
```

Penyebab yang paling sering:

* nama pada `DB_DATABASE` salah
* database belum pernah dibuat
* Anda sempat menolak pembuatan database otomatis

Cara memperbaikinya:

1. cek nilai `DB_DATABASE` di `.env`
2. jalankan `php artisan migrate`
3. jika diminta membuat database, jawab `yes`

### Cara membaca kode awal SQLSTATE

Anda tidak perlu menghafal seluruh pesan error.

Cukup pahami kode awalnya.

* `HY000` biasanya mengarah ke masalah koneksi atau konfigurasi
* `42000` sering mengarah ke database yang belum ada atau akses bermasalah

Dengan membaca kode awalnya, arah pengecekan jadi lebih cepat.

### Troubleshooting yang paling sering

Masalah yang paling sering muncul:

* **MySQL belum aktif** — nyalakan lewat **Laragon**
* **port tidak cocok** — samakan `DB_PORT` dengan port MySQL aktif
* **password salah** — untuk setelan lokal umum, pakai `DB_PASSWORD=`
* **nama database salah** — cek ulang `DB_DATABASE`
* **cache konfigurasi belum dibersihkan** — jalankan `php artisan config:clear`

### Poin evaluasi bab 5.6

Pastikan Anda sudah memahami poin berikut:

* Saya paham bahwa error koneksi database biasanya muncul sebagai pesan SQLSTATE.
* Saya tahu Laravel membutuhkan host, port, nama database, dan kredensial yang benar.
* Saya paham error `[2002]` biasanya terkait server MySQL, port, atau `pdo_mysql`.
* Saya paham error `[1045]` biasanya terkait username atau password database.
* Saya tahu setelan lokal yang umum memakai `DB_USERNAME=root` dan `DB_PASSWORD=`.
* Saya paham error `[1049]` berarti database yang diminta belum ada.
* Saya selalu menjalankan `php artisan config:clear` setelah mengubah `.env`.
* Saya bisa memeriksa masalah koneksi dengan urutan yang benar.

Jika semuanya sudah jelas, lanjut ke [6.1 Pengenalan Eloquent ORM](/laravel/bab-6-fitur-read/6.1-pengenalan-eloquent-orm.md).


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://learn.devlabss.my.id/laravel/bab-5-migration-and-seeder/5.6-mengatasi-error-gagal-koneksi.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
