程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 數據庫知識 >> MYSQL數據庫 >> MySQL綜合教程 >> MySQL數據庫相關異常處理總結篇

MySQL數據庫相關異常處理總結篇

編輯:MySQL綜合教程

我們知道,任何數據庫在使用過程中,發生異常是不可避免的。本文我們對MySQL數據庫使用過程中的一些相關異常處理進行了總結,接下來就讓我們來一起了解這一部分內容吧。

問題一:啟動mysql時候出現Starting MySQL..Manager of pid-file quit without updating f[失敗] Starting MySQL...Manager of pid-file quit without updating [失敗]

解決方案:

第一種:

1.刪除 /usr/local/mysql/data/mysql-bin.*  文件夾所有臨時文件數字後綴名。

2.重啟mysql用二進制安裝後,重啟的方法)service mysqld start。

第二種:

編輯/etc/my.cnf 添加:

  1. [mysqld]  
  2.  
  3. datadir=/var/lib/mysql 

MySQL服務器把數據庫存儲在由datadir變量所定義的目錄中。

查看已有進程之後殺掉:

  1. ps -aux|grep mysql  
  2.  
  3. 8016 pts/2 00:00:00 mysqld_safe  
  4.  
  5. 8037 pts/2 00:00:00 mysqld 

重啟mysql。

第三種:

在/etc/my.cnf中注釋掉

skip-federated =>#skip-federated

第四種:

有時候在/etc/my.cnf中設置了datadir=/var/lib/mysql重啟mysql就會出現這種錯誤。

若不單獨設置,mysql默認數據目錄為mysql安裝目錄下。

問題二:當讓系統自己生成庫時候,出現FATAL ERROR: Could not find ./bin/my_print_defaults。

解決方案:/usr/local/mysql/scripts/mysql_install_db --user=mysql --basedir=/usr/local/mysql --datadir=/usr/local/mysql/data

問題三:mysql_connect() [<a href='function.mysql-connect'>function.mysql-connect</a>]: Can't connect to local MySQL server through socket '/var/lib/mysql/mysql.sock' (13)   /eccore/model/mysql.php 94或者Starting MySQL/etc/init.d/mysql: line 327: --socket=/var/lib/mysql/mysql.sock。

解決方案:   

1>  加入如下代碼 ,讓mysql去tmp文件夾應用這個文件,以前默認為/var/lib/mysql/mysql.sock 這個地址。

修改/etc/my.cnf

  1. [mysql]  
  2.  
  3. socket=/tmp/mysql.sock 

2> 進入/tmp文件夾創建mysql.sock

touch mysql.sock

3> 重啟mysql

/etc/init.d/mysqld restart

問題四:A主機mysql訪問B主機mysql:mysql -uroot -proot -P3306 -h192.168.100.52 出現如下錯誤:ERROR 2003 (HY000): Can't connect to MySQL server on '192.168.100.52' (113)

解決方案:

1. 服務器要能在網(公網)上被訪問到,如果有防火牆,要開放3306端口(MySQL 默認的監聽端口);

關閉所有防火牆/etc/rc.d/init.d/iptables stop

加入規則vim /etc/sysconfig/iptables

2. 在mysql服務器上建立一個遠程用戶,最簡單的方式就是

grant ALL PRIVILEGES  on *.* to username@"%" identified by "root"

問題五:出現MySQL server has gone away有幾種情況。

解決方案:

1、應用程序比如PHP)長時間的執行批量的MYSQL語句。 

解決方案: 

在my.cnf文件中添加或者修改以下兩個變量:

  1. wait_timeout=2880000 
  2.  
  3. interactive_timeout = 2880000 

關於兩個變量的具體說明可以google或者看官方手冊。

如果不能修改my.cnf,則可以在連接數據庫的時候設置CLIENT_INTERACTIVE,比如:

  1. sql = "set interactive_timeout=24*3600";  
  2.  
  3. mysql_real_query(...) 

2、執行一個SQL,但SQL語句過大或者語句中含有BLOB或者longblob字段。比如,圖片數據的處理。

解決方案:

在my.cnf文件中添加或者修改以下變量:

max_allowed_packet = 10M(也可以設置自己需要的大小)

max_allowed_packet 參數的作用是,用來控制其通信緩沖區的最大長度。

關於MySQL數據庫的一些相關異常處理的總結就介紹到這裡了,希望本次的介紹能夠對您有所收獲。

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved