十年網(wǎng)站開(kāi)發(fā)經(jīng)驗(yàn) + 多家企業(yè)客戶 + 靠譜的建站團(tuán)隊(duì)
量身定制 + 運(yùn)營(yíng)維護(hù)+專業(yè)推廣+無(wú)憂售后,網(wǎng)站問(wèn)題一站解決
怎么處理MySQL數(shù)據(jù)庫(kù)相關(guān)異常,相信很多沒(méi)有經(jīng)驗(yàn)的人對(duì)此束手無(wú)策,為此本文總結(jié)了問(wèn)題出現(xiàn)的原因和解決方法,通過(guò)這篇文章希望你能解決這個(gè)問(wèn)題。
大家都明白,任何數(shù)據(jù)庫(kù)在使用過(guò)程中,發(fā)生異常是不可避免的。下面小編來(lái)講解下MySQL數(shù)據(jù)庫(kù)相關(guān)異常怎么處理?
問(wèn)題一:?jiǎn)?dòng)mysql時(shí)候出現(xiàn)StartingMySQL..Managerofpid-filequitwithoutupdatingf[失敗]StartingMySQL...Managerofpid-filequitwithoutupdating[失敗]
解決方案:
第一種:
1.刪除/usr/local/mysql/data/mysql-bin.*文件夾所有臨時(shí)文件數(shù)字后綴名。
2.重啟mysql(用二進(jìn)制安裝后,重啟的方法)servicemysqldstart。
第二種:
編輯/etc/my.cnf添加:
[mysqld]datadir=/var/lib/mysql
MySQL服務(wù)器把數(shù)據(jù)庫(kù)存儲(chǔ)在由datadir變量所定義的目錄中。
查看已有進(jìn)程之后殺掉:
ps-aux|grepmysql8016pts/200:00:00mysqld_safe8037pts/200:00:00mysqld
重啟mysql。
第三種:
在/etc/my.cnf中注釋掉
skip-federated=>#skip-federated
第四種:
有時(shí)候在/etc/my.cnf中設(shè)置了datadir=/var/lib/mysql重啟mysql就會(huì)出現(xiàn)這種錯(cuò)誤。
若不單獨(dú)設(shè)置,mysql默認(rèn)數(shù)據(jù)目錄為mysql安裝目錄下。
問(wèn)題二:當(dāng)讓系統(tǒng)自己生成庫(kù)時(shí)候,出現(xiàn)FATALERROR:Couldnotfind./bin/my_print_defaults。
解決方案:/usr/local/mysql/scripts/mysql_install_db--user=mysql--basedir=/usr/local/mysql--datadir=/usr/local/mysql/data
問(wèn)題三:mysql_connect()[function.mysql-connect]:Can'tconnecttolocalMySQLserverthroughsocket'/var/lib/mysql/mysql.sock'(13)/eccore/model/mysql.php94或者StartingMySQL/etc/init.d/mysql:line327:--socket=/var/lib/mysql/mysql.sock。
解決方案:
1>加入如下代碼,讓mysql去tmp文件夾應(yīng)用這個(gè)文件,以前默認(rèn)為/var/lib/mysql/mysql.sock這個(gè)地址。
修改/etc/my.cnf
[mysql]socket=/tmp/mysql.sock
2>進(jìn)入/tmp文件夾創(chuàng)建mysql.sock
touchmysql.sock
3>重啟mysql
/etc/init.d/mysqldrestart
MySQL數(shù)據(jù)庫(kù)相關(guān)異常怎么處理
問(wèn)題四:A主機(jī)mysql訪問(wèn)B主機(jī)mysql:mysql-uroot-proot-P3306-h292.168.100.52出現(xiàn)如下錯(cuò)誤:ERROR2003(HY000):Can'tconnecttoMySQLserveron'192.168.100.52'(113)
解決方案:
1.服務(wù)器要能在網(wǎng)(公網(wǎng))上被訪問(wèn)到,如果有防火墻,要開(kāi)放3306端口(MySQL默認(rèn)的監(jiān)聽(tīng)端口);
關(guān)閉所有防火墻/etc/rc.d/init.d/iptablesstop
加入規(guī)則vim/etc/sysconfig/iptables
2.在mysql服務(wù)器上建立一個(gè)遠(yuǎn)程用戶,最簡(jiǎn)單的方式就是
grantALLPRIVILEGESon*.*tousername@"%"identifiedby"root"
問(wèn)題五:出現(xiàn)MySQLserverhasgoneaway有幾種情況。
解決方案:
1、應(yīng)用程序(比如PHP)長(zhǎng)時(shí)間的執(zhí)行批量的MYSQL語(yǔ)句。
解決方案:
在my.cnf文件中添加或者修改以下兩個(gè)變量:
wait_timeout=2880000interactive_timeout=2880000
關(guān)于兩個(gè)變量的具體說(shuō)明可以google或者看官方手冊(cè)。
如果不能修改my.cnf,則可以在連接數(shù)據(jù)庫(kù)的時(shí)候設(shè)置CLIENT_INTERACTIVE,比如:
sql="setinteractive_timeout=24*3600";mysql_real_query(...)
2、執(zhí)行一個(gè)SQL,但SQL語(yǔ)句過(guò)大或者語(yǔ)句中含有BLOB或者longblob字段。比如,圖片數(shù)據(jù)的處理。
解決方案:
在my.cnf文件中添加或者修改以下變量:
max_allowed_packet=10M(也可以設(shè)置自己需要的大小)
max_allowed_packet參數(shù)的作用是,用來(lái)控制其通信緩沖區(qū)的較大長(zhǎng)度。
看完上述內(nèi)容,你們掌握怎么處理MySQL數(shù)據(jù)庫(kù)相關(guān)異常的方法了嗎?如果還想學(xué)到更多技能或想了解更多相關(guān)內(nèi)容,歡迎關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道,感謝各位的閱讀!