Mengatasi SQLSTATE[HY000]: General error: 1835 Laravel - Rumah IT

Baru

recent

Mengatasi SQLSTATE[HY000]: General error: 1835 Laravel

Mengatasi SQLSTATE[HY000]: General error: 1835 Laravel

Halo semua, Saya menggunakan Laravel di server Share Hosting. Kemarin semuanya berfungsi dengan baik (selama berbulan-bulan situs web saya berfungsi dengan baik), pagi ini ketika saya akan mengakses website saya, saya sempat kaget karena website saya tiba-tiba tidak bisa terbuka dengan baik. Saat mencoba mengaksesnya, namun saya mendapatkan pesan error :


SQLSTATE[HY000]: General error: 1835 Malformed communication packet (SQL: select * from users where id = 1 limit 1)

Saya telah memeriksa secara online dan tidak dapat menemukan solusi. Saya mencoba mengupgrade MySQL ke versi terbaru (Maria DB 10.3) Saya mencoba mengatur ulang kata sandi untuk pengguna database. (Juga tidak ada perubahan)

Saya memeriksa dan mencoba solusi untuk mengatur read_rnd_buffer_size = 256K di file my.cnf untuk pengaturan mysql

Ketika saya mencoba untuk menonaktifkan fungsi yang menyebabkan error, ternyata hanya menunjukkan fungsi berikutnya, dan semuanya seperti itu. Jadi saya yakin Laravel sama sekali tidak bisa terhubung dengan mysql.

Setelah penelitian lebih dalam, saya menemukan bahwa hanya Laravel yang tidak dapat terhubung ke database. Di server yang sama saya memiliki 2x aplikasi Laravel, Codeigniter dan wordpress. Kedua aplikasi Laravel tidak dapat diakses pada waktu yang sama, tetapi codeigniter dan wordpress berfungsi dengan baik.

Penyebab General error: 1835 pada Laravel

General error: 1835 disebabkan oleh update terbaru dari versi MariaDB atau MySQL yaitu 10.3 . Error tersebut mengakibatkan Laravel tidak bisa bisa terhubung dengan database MySQL atau MariaDB. Sehingga saat kita membuka website atau aplikasi yang dibuat dengan framework laravel, maka akan terjadi error 500 atau internal server error.

Solusi General error: 1835 pada Laravel

General error: 1835 dapat diatasi dengan 3 cara , yaitu sebagai berikut :

1. Downgrade versi MariaDB

Solusi yang pertama adalah dengan menurunkan versi MariaDB dan mengunci paket MariaDB di tempat untuk menghindari paket diperbarui dan membuka kuncinya saat dilakukan patch.

2. Upgrade versi PHP 7.3 atau 7.4

Jika kalian ingin tetap mempertahankan versi MariaDB dan tidak ingin men-downgrade-nya, solusi kedua adalah dengan melakukan upgrade versi PHP. MariaDB versi terbaru memerlukan PHP versi 7.3 atau 7.4

3. Manipulasi Konfigurasi Database Laravel

Nah, langkah terakhir ini dilakukan jika kalian ingin tetap memperbarui versi MariaDB tetapi tidak ingin menaikan versi PHP. Maka solusi ini menjadi alternatif. Karena beberapa aplikasi Laravel ada yang bekerja hanya dengan versi PHP tertentu, misalnya saya mempunyai website donasi yang hanya bisa bekerja di PHP 7.2, ketika saya melakukan update ke PHP 7.3 atau 7.4 , ternyata websitenya malah tidak bisa diakses , maka solusinya adalah dengan memanipulasi konfigurasi database laravel.

File konfigurasi laravel ada di folder config/database.php , tambahkan kode 'options' => [PDO::ATTR_EMULATE_PREPARES => true], pada baris terakhir untuk pengaturan koneksi dengan mysql .

'mysql' => [
        'driver' => 'mysql',
        'host' => env('DB_HOST', '127.0.0.1'),
        'port' => env('DB_PORT', '3306'),
        'database' => env('DB_DATABASE', 'forge'),
        'username' => env('DB_USERNAME', 'forge'),
        'password' => env('DB_PASSWORD', ''),
        'unix_socket' => env('DB_SOCKET', ''),
        'charset' => 'utf8mb4',
        'collation' => 'utf8mb4_unicode_ci',
        'prefix' => '',
        'strict' => false,
        'engine' => null,
        'options'   => [PDO::ATTR_EMULATE_PREPARES => true],
    ],

Terakhir simpan file dan silahkan buka kembali website yang error tadi. Hasilnya website bisa diakses tanpa menurunkan kembali versi MariaDB dan tanpa menaikkan versi PHP.
All Rights Reserved by Rumah IT - Rumah Teknologi Informasi © 2013 - 2020
Powered By Blogger

Contact form

Name

Email *

Message *

Powered by Blogger.