MySQL數(shù)據(jù)庫相關(guān)異常處理總結(jié)篇
我們知道,任何數(shù)據(jù)庫在使用過程中,發(fā)生異常是不可避免的。本文我們對MySQL數(shù)據(jù)庫使用過程中的一些相關(guān)異常處理進行了總結(jié),接下來就讓我們來一起了解這一部分內(nèi)容吧。
問題一:啟動mysql時候出現(xiàn)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.* 文件夾所有臨時文件數(shù)字后綴名。
2.重啟mysql(用二進制安裝后,重啟的方法)service mysqld start。
第二種:
編輯/etc/my.cnf 添加:
- [mysqld]
- datadir=/var/lib/mysql
MySQL服務(wù)器把數(shù)據(jù)庫存儲在由datadir變量所定義的目錄中。
查看已有進程之后殺掉:
- ps -aux|grep mysql
- 8016 pts/2 00:00:00 mysqld_safe
- 8037 pts/2 00:00:00 mysqld
重啟mysql。
第三種:
在/etc/my.cnf中注釋掉
skip-federated =>#skip-federated
第四種:
有時候在/etc/my.cnf中設(shè)置了datadir=/var/lib/mysql重啟mysql就會出現(xiàn)這種錯誤。
若不單獨設(shè)置,mysql默認數(shù)據(jù)目錄為mysql安裝目錄下。
問題二:當讓系統(tǒng)自己生成庫時候,出現(xiàn)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文件夾應(yīng)用這個文件,以前默認為/var/lib/mysql/mysql.sock 這個地址。
修改/etc/my.cnf
- [mysql]
- socket=/tmp/mysql.sock
2> 進入/tmp文件夾創(chuàng)建mysql.sock
touch mysql.sock
3> 重啟mysql
/etc/init.d/mysqld restart
問題四:A主機mysql訪問B主機mysql:mysql -uroot -proot -P3306 -h192.168.100.52 出現(xiàn)如下錯誤:ERROR 2003 (HY000): Can't connect to MySQL server on '192.168.100.52' (113)
解決方案:
1. 服務(wù)器要能在網(wǎng)(公網(wǎng))上被訪問到,如果有防火墻,要開放3306端口(MySQL 默認的監(jiān)聽端口);
關(guān)閉所有防火墻/etc/rc.d/init.d/iptables stop
加入規(guī)則vim /etc/sysconfig/iptables
2. 在mysql服務(wù)器上建立一個遠程用戶,最簡單的方式就是
grant ALL PRIVILEGES on *.* to username@"%" identified by "root"
問題五:出現(xiàn)MySQL server has gone away有幾種情況。
解決方案:
1、應(yīng)用程序(比如PHP)長時間的執(zhí)行批量的MYSQL語句。
解決方案:
在my.cnf文件中添加或者修改以下兩個變量:
- wait_timeout=2880000
- interactive_timeout = 2880000
關(guān)于兩個變量的具體說明可以google或者看官方手冊。
如果不能修改my.cnf,則可以在連接數(shù)據(jù)庫的時候設(shè)置CLIENT_INTERACTIVE,比如:
- sql = "set interactive_timeout=24*3600";
- mysql_real_query(...)
2、執(zhí)行一個SQL,但SQL語句過大或者語句中含有BLOB或者longblob字段。比如,圖片數(shù)據(jù)的處理。
解決方案:
在my.cnf文件中添加或者修改以下變量:
max_allowed_packet = 10M(也可以設(shè)置自己需要的大小)
max_allowed_packet 參數(shù)的作用是,用來控制其通信緩沖區(qū)的***長度。
關(guān)于MySQL數(shù)據(jù)庫的一些相關(guān)異常處理的總結(jié)就介紹到這里了,希望本次的介紹能夠?qū)δ兴斋@。
【編輯推薦】






