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

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

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

第四步,在/etc/my.cnf文件中增加lc-messages-dir=/usr/share/mysql配置,這里說下為什么是lc-messages-dir,是因為錯誤日志里面提示了這個配置,因此加上這個配置,為什么路徑是/usr/share/mysql,這個是因為一般是mysql的主路徑,也就是basedir路徑,只要這個對了,文件自然能找到。

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

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

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

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


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

