Saya menjalankan server di kantor saya untuk memproses beberapa file dan melaporkan hasilnya ke server MySQL jarak jauh.
Pemrosesan file membutuhkan waktu dan prosesnya setengah jalan dengan kesalahan berikut:
2006, MySQL server has gone away
Saya pernah mendengar tentang pengaturan MySQL, wait_timeout , tetapi apakah saya perlu mengubahnya di server di kantor saya atau di server MySQL yang jauh?
mysql
mysql-error-2006
floatleft
sumber
sumber
max_allowed_packet
ukuran atauwait_timeout
jumlah tidak memperbaikinya, periksa penggunaan memori Anda. Saya mendapatkan kesalahan yang sama dan itu disebabkan oleh server saya kehabisan memori. Saya menambahkan file swap 1GB dan memperbaikinya.Jawaban:
Mungkin lebih mudah untuk memeriksa apakah koneksi dan membangun kembali jika diperlukan.
Lihat PHP: mysqli_ping untuk info tentang itu.
sumber
Saya telah menemukan ini beberapa kali dan saya biasanya menemukan jawabannya adalah pengaturan standar yang sangat rendah
max_allowed_packet
.Meningkatkannya di
/etc/my.cnf
(bawah[mysqld]
) ke 8 atau 16M biasanya memperbaikinya. (Default di MySql 5.7 adalah4194304
, yaitu 4MB.)Catatan: Cukup buat garis jika tidak ada
Catatan: Ini dapat diatur pada server Anda saat sedang berjalan.
Gunakan
set global max_allowed_packet=104857600
. Ini mengaturnya ke 100MB.sumber
mysql.server stop
,mysql.server start
(Oktober 2018, MySQL v5.7, MacOS)Saya memiliki masalah yang sama tetapi
max_allowed_packet
mengubahmy.ini/my.cnf
file di bawah[mysqld]
membuat trik.tambahkan satu baris
sekarang
restart the MySQL service
setelah Anda selesai.sumber
Saya menggunakan perintah berikut dalam baris perintah MySQL untuk mengembalikan database MySQL yang ukurannya lebih dari 7GB, dan berfungsi.
sumber
show variables like 'max_allowed_packet';
Kesalahan: 2006 ( CR_SERVER_GONE_ERROR )
Secara umum Anda dapat mencoba lagi menghubungkan dan kemudian melakukan kueri lagi untuk menyelesaikan masalah ini - coba 3-4 kali sebelum benar-benar menyerah.
Saya akan menganggap Anda menggunakan PDO. Jika demikian maka Anda akan menangkap Pengecualian PDO, menambah penghitung dan kemudian mencoba lagi jika penghitung berada di bawah ambang batas.
Jika Anda memiliki kueri yang menyebabkan batas waktu, Anda dapat mengatur variabel ini dengan menjalankan:
Di mana 300 adalah jumlah detik yang Anda pikir waktu maksimum kueri bisa.
Informasi lebih lanjut tentang cara menangani masalah koneksi Mysql.
Sunting: Dua pengaturan lain yang mungkin ingin Anda gunakan adalah
net_write_timeout
dannet_read_timeout
.sumber
Dalam MAMP (versi non-pro) saya menambahkan
untuk
...\MAMP\bin\startMysql.sh
Kredit dan detail lainnya di sini
sumber
Kesalahan ini terjadi karena kedaluwarsa wait_timeout.
Buka saja server mysql, periksa wait_timeout-nya:
http://sggoyal.blogspot.in/2015/01/2006-mysql-server-has-gone-away.html
sumber
Ada beberapa penyebab kesalahan ini.
Terkait MySQL / MariaDB:
wait_timeout
- Waktu dalam detik ketika server menunggu koneksi menjadi aktif sebelum menutupnya.interactive_timeout
- Waktu dalam detik ketika server menunggu koneksi interaktif.max_allowed_packet
- Ukuran maksimum dalam byte paket atau string yang dihasilkan / perantara. Ditetapkan sebesar BLOB terbesar, dalam kelipatan 1024.Contoh my.cnf :
Terkait server:
free -h
Kerangka terkait:
CONN_MAX_AGE
(lihat dokumen )Cara men-debug-nya:
SHOW VARIABLES LIKE '%time%';
mysqladmin variables
log_warnings = 4
log_error_verbosity = 3
sumber
Pada windows orang-orang yang menggunakan xampp harus menggunakan jalur ini xampp / mysql / bin / my.ini dan mengubah max_allowed_packet (di bagian [mysqld]) ke ukuran pilihan Anda. misalnya
Lagi di php.ini (xampp / php / php.ini) ubah upload_max_filesize ukuran pilihan. misalnya
Beri aku sakit kepala selama beberapa waktu sampai saya menemukan ini. Semoga ini bisa membantu.
sumber
upload_max_filesize
variabel. Itu selalu tidak dikenali dalam mysql sayaSaya mendapatkan kesalahan yang sama di server DigitalOcean Ubuntu saya.
Saya mencoba mengubah pengaturan max_allowed_packet dan wait_timeout tetapi tidak satupun dari mereka memperbaikinya.
Ternyata server saya kehabisan RAM. Saya menambahkan file swap 1GB dan itu memperbaiki masalah saya.
Periksa memori Anda dengan
free -h
untuk melihat apakah itu yang menyebabkannya.sumber
Itu masalah RAM bagi saya.
Saya mengalami masalah yang sama bahkan pada server dengan 12 core CPU dan 32 GB RAM. Saya meneliti lebih lanjut dan mencoba membebaskan RAM. Ini adalah perintah yang saya gunakan di Ubuntu 14.04 untuk membebaskan RAM:
Dan, itu memperbaiki segalanya. Saya telah mengaturnya di bawah cron untuk dijalankan setiap jam.
Dan, Anda dapat menggunakan perintah ini untuk memeriksa berapa banyak RAM gratis yang tersedia:
Dan, Anda akan mendapatkan sesuatu seperti ini:
sumber
Dalam kasus saya itu adalah nilai
open_files_limit
variabel yang rendah , yang memblokir akses mysqld ke file data.Saya memeriksanya dengan:
Setelah saya mengubah variabel menjadi nilai besar, server kami hidup kembali:
sumber
Jika Anda menggunakan WAMPSERVER 64Bit, silakan cari beberapa kemunculan max_allowed_packet karena WAMP menggunakan nilai yang ditetapkan di [wampmysqld64] dan bukan nilai yang ditetapkan di [mysqldump], yang bagi saya masalahnya, saya sedang memperbarui yang salah. Setel ini menjadi sesuatu seperti max_allowed_packet = 64M.
Semoga ini membantu pengguna Wampserver lain di luar sana.
sumber
Ini umumnya menunjukkan masalah konektivitas server MySQL atau batas waktu. Secara umum dapat diselesaikan dengan mengubah wait_timeout dan max_allowed_packet di my.cnf atau yang serupa.
Saya akan menyarankan nilai-nilai ini:
wait_timeout = 28800
max_allowed_packet = 8M
sumber
Untuk Kotak Vagrant, pastikan Anda mengalokasikan cukup memori ke kotak
sumber
Skenario yang tidak mungkin adalah Anda memiliki firewall antara klien dan server yang memaksa TCP reset ke koneksi.
Saya punya masalah itu, dan saya menemukan firewall F5 perusahaan kami dikonfigurasi untuk mengakhiri sesi tidak aktif yang menganggur selama lebih dari 5 menit.
Sekali lagi, ini adalah skenario yang tidak mungkin.
sumber
Itu selalu merupakan ide yang baik untuk memeriksa log dari server Mysql, untuk alasan mengapa itu hilang.
Itu akan memberitahumu.
sumber
Jika Anda menggunakan server xampp:
Pergi ke xampp -> mysql -> bin -> my.ini
Ubah parameter di bawah ini:
max_allowed_packet = 500M
innodb_log_file_size = 128M
Ini sangat membantu saya :)
sumber
batalkan komentar ligne di bawah ini di Anda
my.ini/my.cnf
, ini akan membagi file besar Anda menjadi bagian yang lebih kecilUNTUK
sumber
Saya menemukan solusi untuk "# 2006 - server MySQL telah hilang" kesalahan ini. Solusinya hanya Anda harus memeriksa dua file
Path dari file-file ini di windows adalah
Dalam dua file ini nilai dari ini:
Dalam kasus saya itu adalah:
ubah ke:
Pastikan keduanya:
Dan set terakhir:
Kemudian restart Wampserver.
Untuk mengubah nama pengguna dan kata sandi phpmyadmin
Anda dapat secara langsung mengubah nama pengguna dan kata sandi phpmyadmin melalui file config.inc.php
Dua baris ini
Di sini Anda dapat memberikan nama pengguna dan kata sandi baru. Setelah perubahan simpan file dan restart server WAMP.
sumber
Saya mendapat pesan Error 2006 di berbagai perangkat lunak klien MySQL di desktop Ubuntu saya. Ternyata versi driver JDBC saya terlalu tua.
sumber
Ini mungkin masalah ukuran file .sql Anda.
Jika Anda menggunakan xampp. Buka panel kontrol xampp -> Klik MySql config -> Buka my.ini.
Tambah ukuran paket.
sumber
Ada cara yang lebih mudah jika Anda menggunakan XAMPP. Buka panel kontrol XAMPP, dan klik tombol config di bagian mysql.
Sekarang klik pada my.ini dan itu akan terbuka di editor. Perbarui paket max_allowed_packet ke ukuran yang Anda inginkan.
Kemudian restart layanan mysql. Klik berhenti pada layanan Mysql klik mulai lagi. Tunggu beberapa menit.
Kemudian coba jalankan permintaan Mysql Anda lagi. Semoga ini berhasil.
sumber
MAMP 5.3, Anda tidak akan menemukan my.cnf dan menambahkannya tidak berfungsi karena max_allowed_packet disimpan dalam variabel.
Salah satu solusinya adalah:
Jalankan kueri berikut ini, atur max_allowed_packet ke 7gb:
atur global max_allowed_packet = 268435456;
Untuk beberapa, Anda mungkin perlu meningkatkan nilai-nilai berikut juga:
sumber
Untuk pengguna yang menggunakan XAMPP, ada 2 parameter max_allowed_packet di C: \ xampp \ mysql \ bin \ my.ini.
sumber
Kesalahan ini pada dasarnya terjadi karena dua alasan.
Anda dapat mencoba kode ini di bawah ini.
Ini mengurangi kesalahan apa pun alasan di baliknya, terutama karena alasan kedua.
Jika itu disebabkan oleh RAM yang rendah, Anda harus meningkatkan efisiensi koneksi basis data dari kode, dari konfigurasi basis data, atau hanya menaikkan RAM.
sumber
Kalau-kalau ini membantu siapa pun:
Saya mendapatkan kesalahan ini ketika saya membuka dan menutup koneksi dalam suatu fungsi yang akan dipanggil dari beberapa bagian aplikasi. Kami memiliki terlalu banyak koneksi sehingga kami pikir mungkin ide yang baik untuk menggunakan kembali koneksi yang ada atau membuangnya dan membuat yang baru seperti:
self :: $ instance-> query ('KILL CONNECTION_ID ()'); self :: $ instance = null; return self :: newConnection ($ database, $ host, $ user, $ password); } return self :: $ instance; } Yah ternyata kita sudah agak terlalu teliti dengan pembunuhan dan karenanya proses melakukan hal-hal penting pada koneksi lama tidak pernah bisa menyelesaikan bisnis mereka. Jadi kami menghilangkan garis-garis ini
dan karena perangkat keras dan pengaturan mesin memungkinkan, kami menambah jumlah koneksi yang diizinkan pada server dengan menambahkan
ke file konfigurasi kami. Ini memperbaiki masalah kami untuk saat ini dan kami belajar sesuatu tentang membunuh koneksi mysql.
sumber
Jika Anda tahu akan offline untuk sementara waktu, Anda dapat menutup koneksi, melakukan pemrosesan, menyambung kembali, dan menulis laporan.
sumber