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

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > 数据库 >内容正文

数据库

MySQL服务器端客户端常见错误

發布時間:2024/8/26 数据库 39 豆豆
生活随笔 收集整理的這篇文章主要介紹了 MySQL服务器端客户端常见错误 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

客戶端

1.ERROR 2013 (HY000) at line 1: Lost connection to MySQL server during query

使用select 一個大表,query的過程中被主庫kill掉會出現下面錯誤

2.ERROR 2006 (HY000): MySQL server has gone away

如果超過wait_timeout或者interactive_timeout時,再使用這個連接時
admin>show databases;

insert values()()如果數據量的大小超過了max_allow_packets的大小,也會報
ERROR 2006 (HY000): MySQL server has gone away

服務器端error log中報錯:
141111 19:30:16 [Warning] Aborted connection 1280 to db: 'deal' user: 'admin' host: '10.0.0.0' (Got timeout reading communication packets)

3.ERROR 1045 (28000): Access denied for user 'test'@'10.0.0.0' (using password: YES)

  • ping一下要連接數據庫,看能否ping通;
  • 使用mysql client嘗試連接一下,注意使用-h -u -P -p分別指定host、user、port,例如mysql -hdbxx -utest -P5002 -p,然后回車,輸入密碼;
  • 強調一下,第2步的時候使用-p之后回車,然后輸入密碼,而不是把密碼作為參數直接輸入,這樣一個安全,二是避免了密碼中轉義字符引起的問題;
  • 4.ERROR 2003 (HY000): Can't connect to MySQL server on '192.168.1.1' (111)

    這種情況下,說明還沒有連接上mysql,嘗試ping下數據庫,看是否能ping通;其次看下mysql server是否啟動;

    5.ERROR 1040 (HY000): Too many connections

    當前服務器端的連接數超過了設置的最大連接數max_connections

    6.Host 'host_name' is blocked because of many connection errors.Unblock with 'mysqladmin flush-hosts'

    如果client在連接server的時候,出錯次數超過server設置的max_connect_errors(不包括錯誤的密碼嘗試),則會報這個錯誤;這個一般是網絡存在問題,如果確認網絡存在偶爾性的,可以增大max_connect_errors并執行flush-hosts

    7.Communications link failure,The last packet successfully received from the server was *** millisecond ago.The last packet successfully sent to the server was ***? millisecond ago。

    ?1) mysql服務器默認的“wait_timeout”是8小時(也就是默認的值默認是28800秒),也就是說一個connection空閑超過8個小時,mysql將自動斷開該connection,通俗的講就是一個連接在8小時內沒有活動,就會自動斷開該連接。而連接池卻認為該連接還是有效的(因為并未校驗連接的有效性),當應用申請使用該連接時,就會導致上面的報錯。

    2) 如果客戶端連接設置了socketTimeout=1000(即1s), 當客戶端連接發送一個慢查詢(超過1s)時,客戶端連接socket會斷開,同樣會報“Communications link failure” 錯誤

    ?

    8.Could not create connection to database server. Attempted reconnect 3 times. Giving up

    ?1)如上錯誤常見情況是后端mysql服務不可用,請確認后端mysql服務正常以及連接使用的配置參數正確;

    ?2)還有一種情況是業務使用了Atlas,業務連接串中配置了重連(autoReconnect=true),當連接池中連接損壞(如上7中描述了可能損壞的情況),業務再次使用該損壞連接的時候會發起重連(JDBC內部機制)并嘗試三次,但是報如上錯誤(確認連接參數無問題)。這是由于jdbc內部重連上后會發送“SET SESSION TRANSACTION ISOLATION LEVEL REPEATABLE READ” 請求,而該請求在0.0.2版本的Atlas中不支持(可升級0.1解決),只會影響當前請求,不影響這個連接下一次的使用。

    ?

    ?

    服務器端

    ?

    1.?[Warning] Aborted connection 104566 to db: 'test' user: 'root' host: 'localhost' (Got an error reading communication packets)

    ? ? 很明顯, MySQL認為讀到了一個錯誤的包,并將該連接Aborted了, 在errlog中記下這個warning, 通過show global status like '%Aborted_clients%' 可以看到Aborted_clients 值的增加。

    ? ? 出現該warning主要是因為客戶端沒有正常調用mysql_close()退出。我們針對php、python、perl做測試如下:

    ? ? 1) python 代碼如下:

    ? ??

    ? ? 運行該程序, 在另一個Term中kill ?或者 kill -9 該進程, 在MySQL errlog中均會出現如上warning

    ? ? 運行該程序, 然后按下 crtl + c 中斷該程序, 在MySQL errlog中沒有出現如上waring

    ? ? 2)php 代碼如下:

    ? ??

    ? ? 運行該程序,在另一個Term中kill ?或者 kill -9 該進程, 在MySQL errlog中均會出現如上warning

    ? ??運行該程序, 然后按下 crtl + c 中斷該程序, 在MySQL errlog中出現如上waring

    ? ? 3)perl 代碼如下:

    ? ??

    ? ? 運行該程序,在另一個Term中kill ?或者 kill -9 該進程, 在MySQL errlog中均會出現如上warning

    ? ??運行該程序, 然后按下 crtl + c 中斷該程序, 在MySQL errlog中出現如上waring

    ? ??注: 通過測試,發現python、php、perl 對 crtl + c (同 kill -2) 處理方式不同,僅python 對 kill -2 信號處理調用了 mysql_close() 正常關閉MySQL連接。?

    ?

    2.[Warning] Access denied for user 'test'@'localhost' (using password: YES)

    ? ?服務器端報此錯誤,主要是客戶端連接的時候使用了錯誤的密碼。

    ? ?創建測試用test, 并賦予test庫的增刪改查權限:

    ? ?

    ? ?1) 在終端使用錯誤的密碼連接MySQL結果如下:

    ? ?

    ? ?可以看到此時客戶端報用戶無權限連接 ERROR, 而此時服務器端errlog中會出現如上的warning

    ? ?2) 在終端連接沒有權限的database 結果如下:

    ? ??

    ? ?此時客戶端報沒有權限連接MySQL庫, 而服務器端errlog中沒有任何warning出現

    ?

    3.[Warning] Aborted connection 104643 to db: 'test' user: 'root' host: 'localhost' (Got timeout reading communication packets)

    ? ?主要是客戶端連接在wait_timeout 時間范圍內都無操作,服務器端會斷開此連接

    ? ?1)首先我們設置wait_timeout值為10秒

    ? ??

    ? ? 2) ?等待超過10s后服務器端報錯如下:

    ? ??

    ? ? 3) ?再在MySQL客戶端中發起操作會報ERROR : MySQL server has gone ?away?

    ? ??

    ? ??

    4.[Warning] Aborted connection 104660 to db: 'test' user: 'root' host: 'localhost' (Got a packet bigger than 'max_allowed_packet' bytes)

    ? ? 此warning主要是因為客戶端向服務器端傳送了大于max_allowed_packet 指定大小的包所導致。測試如下:

    ? 1) 首先將數據通過mysqldump命名將數據導出

    ? ? ?

    ? ? ?默認mysqldump會將數據導出成多個insert into語句, 每個語句大小接近1M

    ? 2)設置max_allowed_packet =?524288

    ? ? ?

    ? 3) 再使用MySQL命令將hostname.sql 導入結果如下:

    ? ??

    ? ? ?服務器errlog中會報如上warning

    ?

    ?

    ?

    總結

    以上是生活随笔為你收集整理的MySQL服务器端客户端常见错误的全部內容,希望文章能夠幫你解決所遇到的問題。

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