我們知道,任何數據庫在使用過程中,發生異常是不可避免的。本文我們對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 添加:
- [mysqld]
- datadir=/var/lib/mysql
MySQL服務器把數據庫存儲在由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中設置了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
- [mysql]
- 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文件中添加或者修改以下兩個變量:
- wait_timeout=2880000
- interactive_timeout = 2880000
關於兩個變量的具體說明可以google或者看官方手冊。
如果不能修改my.cnf,則可以在連接數據庫的時候設置CLIENT_INTERACTIVE,比如:
- sql = "set interactive_timeout=24*3600";
- mysql_real_query(...)
2、執行一個SQL,但SQL語句過大或者語句中含有BLOB或者longblob字段。比如,圖片數據的處理。
解決方案:
在my.cnf文件中添加或者修改以下變量:
max_allowed_packet = 10M(也可以設置自己需要的大小)
max_allowed_packet 參數的作用是,用來控制其通信緩沖區的最大長度。
關於MySQL數據庫的一些相關異常處理的總結就介紹到這裡了,希望本次的介紹能夠對您有所收獲。