mysql執(zhí)行語句后只有錯(cuò)誤代碼,沒有錯(cuò)誤信息的問題
問題說明
mysql數(shù)據(jù)庫在執(zhí)行完sql語句后,因語法錯(cuò)誤,報(bào)錯(cuò)時(shí)僅顯示錯(cuò)誤代碼,沒有錯(cuò)誤信息。
這個(gè)大部分原因是安裝數(shù)據(jù)庫時(shí)出現(xiàn)問題,/etc/my.cnf配置項(xiàng)不對。
有的人安裝的時(shí)候是使用源碼安裝,需要自己去配置,在這種情況下就有可能出現(xiàn)錯(cuò)配。
本例中就是因?yàn)殄e(cuò)配了/etc/my.cnf導(dǎo)致的問題。
如下圖所示,在執(zhí)行完語句后,僅顯示1075錯(cuò)誤代碼,后面什么信息也沒有。

解決方案
第一步,先查看錯(cuò)誤日志,具體錯(cuò)誤日志的位置請根據(jù)實(shí)際情況尋找,本例中mysql錯(cuò)誤日志文件位置在/var/log/mysqld.log,大部分使用rpm方式安裝的話,默認(rèn)也在這個(gè)位置。
第二步,查看具體錯(cuò)誤日志,如下圖所示,明確提示了找不到errmsg.sys文件
# less /var/log/mysqld.log|grep -i error

第三步,根據(jù)錯(cuò)誤日志,找到errmsg.sys文件具體位置。
使用whereis查看mysql相關(guān)的安裝路徑,再次找到errmsg.sys文件位置,如下圖所示,errmsg.sys文件位置在/usr/share/mysql/english

第四步,在/etc/my.cnf文件中增加lc-messages-dir=/usr/share/mysql配置,這里說下為什么是lc-messages-dir,是因?yàn)殄e(cuò)誤日志里面提示了這個(gè)配置,因此加上這個(gè)配置,為什么路徑是/usr/share/mysql,這個(gè)是因?yàn)橐话闶莔ysql的主路徑,也就是basedir路徑,只要這個(gè)對了,文件自然能找到。

第五步,重啟mysql
# service mysqld restart
第六步,再次查詢剛剛的語句,查看結(jié)果,現(xiàn)在有錯(cuò)誤信息了。

第七步,再次查看錯(cuò)誤日志,可以看到剛剛的錯(cuò)沒有了,到這一步errmsg.sys這個(gè)問題已經(jīng)解決了。如果你有興趣,可以接著往下看。

第八步,剛剛說了,到第七步,問題已經(jīng)解決了,但是本次測試意外的發(fā)現(xiàn)另外的錯(cuò),那這個(gè)錯(cuò)和上面的errmsg.sys錯(cuò)有什么關(guān)系,可以看到這個(gè)錯(cuò)是找不到so文件。
再次返回查看配置文件,可以看到是因?yàn)檫@里的basedir配置的是/usr/bin/mysql,所以跟mysql相關(guān)的文件都會在這個(gè)路徑下面去找,但是errmsg.sys和現(xiàn)在的這個(gè)so文件并不在/usr/bin/mysql路徑下,所以歸根結(jié)底,還是basedir配置錯(cuò)了,引起了連鎖反應(yīng),導(dǎo)致了一系列錯(cuò)。
最終修改basedir配置項(xiàng),把這個(gè)注釋掉即可(使用rpm默認(rèn)安裝可以注釋掉)或者配置正確的basedir路徑(尤其是使用源碼自定義安裝的mysql數(shù)據(jù)庫一定要配置對basedir),本例中注釋掉basedir。

最后一步,重啟mysql,所有的錯(cuò)都沒有了,如下圖所示。


總結(jié)
自定義安裝的mysql,/etc/my.cnf一定要配置對,不然會有很多意想不到的問題。
rpm默認(rèn)安裝的mysql,也檢查下/etc/my.cnf對不對,啟動完以后,查看mysql有沒有報(bào)錯(cuò)。
以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
相關(guān)文章
mysql通過find_in_set()函數(shù)實(shí)現(xiàn)where in()順序排序
這篇文章主要介紹了mysql通過find_in_set()函數(shù)實(shí)現(xiàn)where in()順序排序的相關(guān)內(nèi)容,具有一定參考價(jià)值,需要的朋友可以了解下。2017-10-10
Ubuntu Server下MySql數(shù)據(jù)庫備份腳本代碼
為了mysql數(shù)據(jù)庫的安全,我們需要定時(shí)備份mysql數(shù)據(jù)庫,這里提供下腳本代碼,需要的朋友可以參考下2013-06-06
怎么重置mysql的自增列AUTO_INCREMENT初時(shí)值
怎么重置mysql的自增列想必有很多的朋友都不會吧,下面與大家分享下常用的幾種方法,不懂的朋友可以了解下哈,希望對大家有所幫助2013-06-06
mysql下普通用戶備份數(shù)據(jù)庫時(shí)無lock tables權(quán)限的解決方法
mysql使用普通用戶備份出現(xiàn)無lock tables權(quán)限的解決方法,需要的朋友可以參考下。2011-10-10

