程式連不上mysql的解決方法:1、確定mysql服務是否正常,並找運維確認網路問題;2、將「max_allowed_packet」值調大;3、將「net_read_timeout」值調大;4、將「connect_timeout」值調大等。
推薦:《mysql影片教學》
程式連不上mysql的問題總結
連不上mysql時一般有以下四種報錯:
1:Can't connect to MySQL server 2:Lost connection to MySQL server 3:Sorry, due to line fault, temporarily unable to browse, we are dealing with. 4:MySQL server has gone away
一:Can't connect to MySQL server
可能的原因:
# #1,mysql服務端沒有啟動2,網路不通(iptables,selinux,網路不穩定)對應的解決方案:1,dba先確定mysql服務是否正常2,mysql服務正常的情況下找運維確認網路問題二: Lost connection to MySQL server有四種情況可能會導致這樣的報錯:1,網路問題2,查詢的結果集太大,例如一個查詢要回傳數百萬個結果3,客戶端發起資料庫連接的時候由於connect_timeout設定時間太短而報錯,如果是由於這個原因引起的報錯可以透過SHOW GLOBAL STATUS LIKE 'Aborted_connects'查看這個值是否有增加4,查詢有blob類型,超過了max_allowed_packet參數的限制這四種情況對應的解決方案:1,運維監控網路是否有問題2,將net_read_timeout值調大3,將connect_timeout值調大4,將max_allowed_packet值調大三: Sorry, due to line fault, temporarily unable to browse, we are dealing with.這個錯誤不是mysql原生的錯誤,在網路上也沒有找到有類似的資料.目前發現有三種情況會有這種報錯:1,網路有問題2,資料庫連線數過多3,連資料庫的帳號密碼有誤四: MySQL server has gone away有以下12種情況可能會導致這樣的報錯:1,預設的wait_timeout值為8個小時,如果空閒連線超過這個值會被kill2,dba手動kill3,客戶端的帳號沒有權限連接mysql server4,客戶端TCP/IP連線逾時,如使用mysql_options(..., MYSQL_OPT_READ_TIMEOUT,...)或mysql_options(..., MYSQL_OPT_WRITE_TIMEOUT,...)或mysql_options(..., MYSQL_OPT_WRITE_TIMEOUT,...)函數5,當客戶端禁用了自動重連接( automatic reconnection)#6,查詢語句不正確7,查詢語句太長,超過了max_allowed_packet的限制8,一條insert或replace語句更新的行數過多9,網域解析失敗10,防火牆屏蔽了3306埠# 11,一個執行緒fork了多個子程序,當多個子程序共用一個連線時會導致報錯12,mysql服務端掛了報MySQL server has gone away的錯誤原因比較多,我們可以從三個面向來處理這個問題:1,維運a,確認防火牆規則b,dns伺服器無異常d,合理配置php.ini連接mysql的參數connect_timeout,預設為60smysqli.reconnect,預設為off2,DBAa,確定mysql服務與連線數沒有異常b,設定合理的wait_timeout值c,設定在伺服器端合理的max_allowed_packet值#d,確認帳號權限無誤3,開發a,建議使用mysqli替代mysqlb,盡量少用長連線######c,mysqli.ping ()可以在連線中斷後自動重連,mysql.ping()從mysql5.0.3後就不支援自動重連了######d,子程序之間不要共用一個資料庫連線#### ##以gamiss為例,我們來看max_allowed_packet和超時有關的參數: ###
>show variables like 'max_allowed_packet'; +--------------------+------------+ | Variable_name | Value | +--------------------+------------+ | max_allowed_packet | 1073741824 | +--------------------+------------+ >show variables like '%timeout%'; +-----------------------------+----------+ | Variable_name | Value | +-----------------------------+----------+ | connect_timeout | 60 | | delayed_insert_timeout | 300 | | have_statement_timeout | YES | | innodb_flush_log_at_timeout | 1 | | innodb_lock_wait_timeout | 120 | | innodb_rollback_on_timeout | OFF | | interactive_timeout | 86400 | | lock_wait_timeout | 31536000 | | net_read_timeout | 120 | | net_write_timeout | 120 | | rpl_stop_slave_timeout | 31536000 | | slave_net_timeout | 3600 | | thread_pool_idle_timeout | 60 | | wait_timeout | 86400 | +-----------------------------+----------+
以上是程式連不上mysql怎麼辦的詳細內容。更多資訊請關注PHP中文網其他相關文章!