日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 >

MySQL Server has gone away报错原因汇总

發布時間:2024/9/19 28 豆豆
生活随笔 收集整理的這篇文章主要介紹了 MySQL Server has gone away报错原因汇总 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

原因一: MySQL 服務宕了


判斷是否屬于這個原因的方法很簡單,執行以下命令,查看mysql的運行時長:

$ mysql -uroot -p -e "show global status like 'uptime';"

+---------------+-------+ | Variable_name | Value | +---------------+-------+ | Uptime ? ? ? ?| 68928 | +---------------+-------+ 1 row in set (0.04 sec)

或者查看MySQL的報錯日志,看看有沒有重啟的信息:

$ tail /var/log/mysql/error.log 130101 22:22:30 InnoDB: Initializing buffer pool, size = 256.0M 130101 22:22:30 InnoDB: Completed initialization of buffer pool 130101 22:22:30 InnoDB: highest supported file format is Barracuda. 130101 22:22:30 InnoDB: 1.1.8 started; log sequence number 63444325509 130101 22:22:30 [Note] Server hostname (bind-address): '127.0.0.1'; port: 3306 130101 22:22:30 [Note] ? - '127.0.0.1' resolves to '127.0.0.1'; 130101 22:22:30 [Note] Server socket created on IP: '127.0.0.1'. 130101 22:22:30 [Note] Event Scheduler: Loaded 0 events 130101 22:22:30 [Note] /usr/sbin/mysqld: ready for connections. Version: '5.5.28-cll' ?socket: '/var/lib/mysql/mysql.sock' ?port: 3306 ?MySQL Community Server (GPL)

如果uptime數值很大,表明MySQL服務運行了很久了,說明最近服務沒有重啟過。?如果日志沒有相關信息,也說明MySQL服務最近沒有重啟過,可以繼續檢查下面幾項內容。

原因2:連接超時


如果程序使用的是長連接,則這種情況的可能性會比較大。 即某個長連接很久沒有發起新的請求,達到了server端的time out,被server強行關閉。此后再通過這個client發起查詢的時候,就會報錯server has gone away。

$ mysql -uroot -p -e "show global variables like '%timeout';"

+----------------------------+----------+ | Variable_name ? ? ? ? ? ? ?| Value ? ?| +----------------------------+----------+ | connect_timeout ? ? ? ? ? ?| 30 ? ? ? | | delayed_insert_timeout ? ? | 300 ? ? ?| | innodb_lock_wait_timeout ? | 50 ? ? ? | | innodb_rollback_on_timeout | OFF ? ? ?| | interactive_timeout ? ? ? ?| 28800 ? ?| | lock_wait_timeout ? ? ? ? ?| 31536000 | | net_read_timeout ? ? ? ? ? | 30 ? ? ? | | net_write_timeout ? ? ? ? ?| 60 ? ? ? | | slave_net_timeout ? ? ? ? ?| 3600 ? ? | | wait_timeout ? ? ? ? ? ? ? | 28800 ? ?| +----------------------------+----------+

mysql> SET SESSION wait_timeout=5;

?

#Wait 10 second

?

smysql> SELECT NOW(); ERROR 2006 (HY000): MySQL server has gone away No connection. Trying to reconnect... Connection id: ? ?132361 Current database: *** NONE ***

+---------------------+ | NOW() ? ? ? ? ? ? ? | +---------------------+ | 2013-01-02 11:31:15 | +---------------------+ 1 row in set (0.00 sec)

原因3: 進程在server端被主動kill


這種原因和第2種原因比較相似,只是發起者是DBA,或者其他job,發現有長時間的慢查詢執行kill xxx導致。

$ mysql -uroot -p -e "show global status like 'com_kill'"

+---------------+-------+ | Variable_name | Value | +---------------+-------+ | Com_kill ? ? ?| 0 ? ? | +---------------+-------+

?

原因4: Your SQL statement was too large


當查詢的結果集超過?max_allowed_packet?也會出現這樣的報錯,定位方法是打出相關報錯的語句。 用select*into outfile?的方式導出到文件,查看文件大小是否超過max_allowed_packet,如果超過則需要調整參數,或者優化語句。

mysql> show global variables like 'max_allowed_packet'; +--------------------+---------+ | Variable_name ? ? ?| Value ? | +--------------------+---------+ | max_allowed_packet | 1048576 | +--------------------+---------+ 1 row in set (0.00 sec)

?

# 修改參數:

mysql> set global max_allowed_packet=1024*1024*16;

mysql> show global variables like 'max_allowed_packet'; +--------------------+----------+ | Variable_name ? ? ?| Value ? ?| +--------------------+----------+ | max_allowed_packet | 16777216 | +--------------------+----------+ 1 row in set (0.00 sec)

總結

以上是生活随笔為你收集整理的MySQL Server has gone away报错原因汇总的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。