mysql怎么會報錯 mysql錯誤處理

為什么安裝mysql會出現(xiàn)start service錯誤?

一般是因?yàn)槎啻伟惭b沒有卸載干凈,只要把文件夾,服務(wù),注冊表都卸載干凈,再次安裝就可以了。

成都創(chuàng)新互聯(lián)網(wǎng)站建設(shè)服務(wù)商,為中小企業(yè)提供成都網(wǎng)站制作、成都網(wǎng)站建設(shè)、外貿(mào)營銷網(wǎng)站建設(shè)服務(wù),網(wǎng)站設(shè)計,綿陽服務(wù)器托管等一站式綜合服務(wù)型公司,專業(yè)打造企業(yè)形象網(wǎng)站,讓您在眾多競爭對手中脫穎而出成都創(chuàng)新互聯(lián)。

解決方案:使 用services.msc打開服務(wù)窗口,查看MySQL service是否已經(jīng)存在。如已經(jīng)存在并已啟動,則先停止該服務(wù),然后到注冊表("HKEY_LOCAL_MACHINE/SYSTEM /CurrentControlSet/Services")中刪除對應(yīng)服務(wù),并使用命令sc delete MySQL,然后繼續(xù)進(jìn)行安裝,就能成功。

不知道你安裝的是MYsql哪個版本,是否是5.0,首先告訴你,數(shù)據(jù)庫只能裝一次,如果你在你第一次沒有裝成功的情況下,你必須要卸載干凈才 能裝得上,不然會出現(xiàn)很多問題導(dǎo)致你不會安裝成功,至于卸載,個人覺得手動卸載其實(shí)是最干凈利落的,控制面板刪除,然后regedit里面Ctrl+F搜 索mysql,但凡是跟這個相關(guān)的一切都給他刪除掉。

C:\DocumentandSettings\Administrator\ApplicationData(C:\Users\YongHeng\AppData\Roaming/C:\Users\YongHeng\AppData\LocalLow/C:\Users\YongHeng\AppData\Local)中刪除MYSQL相關(guān)的目標(biāo)信息.

為什么mysqld啟動報錯

當(dāng)安裝好mysql后,啟動:/etc/init.d/mysql start 卻報了個錯:Starting MySQL..Manager of pid-file quit without updating f[失敗]) 。下面是我對報錯的解決方法總結(jié),我在許多環(huán)境下安裝過mysql,由于多種原因會報各種錯誤,現(xiàn)在做個總結(jié)以作備查。

一、查看報錯日志

報錯日志是我們解決問題的方向燈,沒有方向燈我們就沒了方向。我有次安裝時報錯日志里就有這樣的錯誤:

/usr/local/mysql/bin/mysqld: error while loading shared libraries: libstdc++.so.5: cannot open shared object file: No such file or directory。很明顯是缺少了庫文件 libstdc++.so.5 。這時我們搜索和libstdc相關(guān)的包安裝即可。

二、也許是selinux惹的禍

如果是centos系統(tǒng),默認(rèn)會開啟selinux,這個時候可以先關(guān)閉它,打開/etc/selinux/config,把SELINUX=enforcing改為SELINUX=disabled后存盤退出重啟機(jī)器試試。

三、殘余數(shù)據(jù)

也有可能是第二次在機(jī)器上安裝mysql,有殘余數(shù)據(jù)影響了服務(wù)的啟動,去mysql的數(shù)據(jù)目錄/data看看,如果存在mysql-bin.index,就趕快把它刪除掉吧,它就是罪魁禍?zhǔn)琢恕?/p>

四、確定數(shù)據(jù)目錄的權(quán)限

數(shù)據(jù)目錄一般是prefix/data,檢查一下它的歸屬,如果不是mysql所有者,一般安裝mysql時都會創(chuàng)建mysql的用戶和組的,這時要修改一下用戶和組:

chown -R mysql:mysql /var/data

五、沒有指定數(shù)據(jù)目錄

mysql在啟動時沒有指定配置文件時會使用/etc/my.cnf配置文件,請打開這個文件查看在[mysqld]節(jié)下有沒有指定數(shù)據(jù)目錄(datadir)。如果沒有請在[mysqld]下設(shè)置這一行:

datadir =/usr/local/mysql/data

六、還有mysql進(jìn)程在跑著

如果這是第二次在機(jī)器上安裝mysql就極有可能會出現(xiàn)這種情況的,這時系統(tǒng)上很有可能還有mysql進(jìn)程在運(yùn)行著。可以執(zhí)行下列命令查看:

ps -ef | grep mysql

如果出現(xiàn)的結(jié)果不止一行的就趕快把它kill掉吧。

七、skip-federated字段在作祟

可以檢查一下/etc/my.cnf文件中有沒有沒被注釋掉的skip-federated字段,如果有就立即注釋掉吧。

八、出錯日志目錄不存在

也有可能你現(xiàn)在還不知道m(xù)ysql的出錯日志在哪里吧?這時你可以執(zhí)行命令查看:

cd mysql/bin

./mysql_safe

這時一定會報錯的, 并在錯誤中顯示將錯誤寫在某某目錄的某某文件里了,這里檢查一下這個目錄和文件是否存在,在的話就按日志指示解決,如果沒有的話就要創(chuàng)建目錄并修改權(quán)限和歸屬了。一般會是/var/lib/mysql/mysql.error,注意mysql.error不用創(chuàng)建的。

cd /var/lib

mkdir mysql

chmod 777 mysql

chown mysql:mysql mysql

為什么mysql創(chuàng)建表總報錯?

出現(xiàn)1064一般都屬于語法錯誤的情況。把表名的單引號和把tinyint的長度去掉。

數(shù)據(jù)庫的語言由GB2312改成 UTP-8就好了。不行就改為GB2312試試,這個錯誤是因?yàn)閿?shù)據(jù)庫語言格式與客戶端編碼格式不一致到導(dǎo)致的

MySQL 是一個關(guān)系型數(shù)據(jù)庫,由瑞典?MySQL AB 公司開發(fā),目前屬于?Oracle?旗下公司。MySQL 最流行的關(guān)系型數(shù)據(jù)庫管理系統(tǒng),在 WEB 應(yīng)用方面 MySQL 是最好的 RDBMS (Relational Database Management System,關(guān)系數(shù)據(jù)庫管理系統(tǒng)) 應(yīng)用軟件之一。

MySQL 是一種關(guān)聯(lián)數(shù)據(jù)庫管理系統(tǒng),關(guān)聯(lián)數(shù)據(jù)庫將數(shù)據(jù)保存在不同的表中,而不是將所有數(shù)據(jù)放在一個大倉庫內(nèi),這樣就增加了速度并提高了靈活性。MySQL 所使用的 SQL 語言是用于訪問數(shù)據(jù)庫的最常用標(biāo)準(zhǔn)化語言。MySQL 軟件采用了雙授權(quán)政策(本詞條"授權(quán)政策"),它分為社區(qū)版和商業(yè)版,由于其體積小、速度快、總體擁有成本低。

mysql5.6.23報錯1067

我遇到同樣的錯誤,折騰了好久才摸索出來。網(wǎng)上的解決辦法都試過了,沒有確實(shí)可行的。最終總結(jié)出來,終于解決了。

我的下載的是mysql-5.7.9綠色版出的問題。最終解決過程供你參考:

1、下載的mysql-5.7.9,出現(xiàn)你的問題。試了各種辦法無法解決。有網(wǎng)友說mysql-5.7.9版本有問題。我改下載了5.6.27版本,嘗試不成功。但報錯變?yōu)椋簾o法啟動mysql服務(wù),發(fā)生錯誤1067。解決辦法:my.ini 添加 tmpdir = D:\mysql-5.6.27-winx64\data。問題解決。

2、后來我對比了mysql-5.7.9與5.6.27,發(fā)現(xiàn)mysql-5.7.9-winx64沒有data目錄,mysql-5.6.27-winx64\data\mysql,存了不少數(shù)據(jù)文件。原來調(diào)試5.7.9的版本時,記得日志報告一直有mysql.user、mysql.plugin不存在的提示。(原以為這些文件會自動生成)。后來把這個mysql-5.6.27-winx64\data下的mysql文件夾整個復(fù)制到5.7.9版本中的同目錄下。問題解決。

啟動mysql服務(wù)器報錯的原因是什么?

一般情況下mysql的啟動錯誤還是很容易排查的,但是今天我們就來說一下不一般的情況。拿到一臺服務(wù)器,安裝完mysql后進(jìn)行啟動,啟動錯誤如下:

有同學(xué)會說,哥們兒你是不是buffer pool設(shè)置太大了,設(shè)置了96G內(nèi)存。這明顯提示無法分配內(nèi)存嘛。如果真是這樣也就不在這里進(jìn)行分享了,哈哈。

我的服務(wù)器內(nèi)存是128G。如下圖:

服務(wù)器內(nèi)存使用情況:

那么問題來了,既然還剩如此多的內(nèi)存,為什么提示無法分配內(nèi)存??。各位童鞋怎么看?

1. 首先想到會不會是有幾條內(nèi)存壞了?于是運(yùn)維的同學(xué)進(jìn)行了檢查,給我的反饋是硬件一切正常。

2. 把mysql配置參數(shù)又檢查了一遍,沒有發(fā)現(xiàn)什么問題,線上一直就是使用這些參數(shù)。

3. 又把文件拷貝到另外一臺機(jī)器,,另外一臺服務(wù)器可以正常啟動(2臺機(jī)器硬件配置一致)。

那么如果排除硬件問題,mysql配置問題,那么剩下的就只有操作系統(tǒng)的內(nèi)核參數(shù)配置了。于是把兩臺服務(wù)器進(jìn)行了對比,最終發(fā)現(xiàn)了一個內(nèi)核參數(shù)不一致。

復(fù)制代碼代碼如下:

vm.overcommit_memory

mysql啟動正常的服務(wù)器改參數(shù)的值是0,而mysql啟動錯誤的這臺服務(wù)器該值是2。

那么問題來了,這個參數(shù)到底是什么鬼?竟然會讓mysql分配內(nèi)存失敗,最后導(dǎo)致無法啟動。經(jīng)過查詢資料知道了vm.overcommit_memory是什么鬼。

vm.overcommit_memory

默認(rèn)值為:0

從內(nèi)核文檔里得知,該參數(shù)有三個值,分別是:

0:當(dāng)用戶空間請求更多的的內(nèi)存時,內(nèi)核嘗試估算出剩余可用的內(nèi)存。

1:當(dāng)設(shè)這個參數(shù)值為1時,內(nèi)核允許超量使用內(nèi)存直到用完為止,主要用于科學(xué)計算.

2:當(dāng)設(shè)這個參數(shù)值為2時,內(nèi)核會使用一個決不過量使用內(nèi)存的算法,即系統(tǒng)整個內(nèi)存地址空間不能超過swap+50%的RAM值,50%參數(shù)的設(shè)定是在overcommit_ratio中設(shè)定。

vm.overcommit_ratio

默認(rèn)值為:50

這個參數(shù)值只有在vm.overcommit_memory=2的情況下,這個參數(shù)才會生效。

那么我們來看一下總的內(nèi)存地址不能超過多少。其實(shí)是可以直接查看的。

[root@yayundeng 3306]# cat /proc/meminfo |grep -i commit

CommitLimit: ?70144396 kB

Committed_AS: ? 135196 kB

[root@yayundeng 3306]#

通過查看可以得知在70G的樣子。那么這個是如何計算的呢?這個就是上面提到的一個公式。swap+50%的RAM值,50%參數(shù)的設(shè)定是在overcommit_ratio中設(shè)定。

總虛擬內(nèi)存 = 可用物理內(nèi)存 × 百分比 + 交換分區(qū)

[root@yayundeng 3306]# cat /proc/meminfo | grep MemTotal

MemTotal: ? ?132096808 kB

[root@yayundeng 3306]#

[root@yayundeng 3306]# free -k

total ? ?used ? ?free ? shared ?buffers ? cached

Mem: ? 132096808 ?1583944 130512864 ? ? 0 ? 10240 ? 133220

-/+ buffers/cache: ?1440484 130656324

Swap: ? 4095992 ? ? 0 ?4095992

[root@yayundeng 3306]# cat /proc/sys/vm/overcommit_ratio

50

[root@yayundeng 3306]#

總虛擬內(nèi)存=132096808 * 50% + 4095992= 70144396 kB

那么最后的結(jié)果就是buffer pool不能超過70144396 kB - 135196 kB=70009200 KB=66G。實(shí)際上經(jīng)過測試,buffer pool只能設(shè)置57G。

最后在看看總虛擬內(nèi)存情況:

CommitLimit:最大可用虛擬內(nèi)存

Committed_AS:已使用虛擬內(nèi)存

[root@yayundeng 3306]# cat /proc/meminfo |grep -i commit

CommitLimit: ?70144396 kB

Committed_AS: ?65539208 kB

那么如果把內(nèi)核參數(shù)vm.overcommit_memory恢復(fù)為默認(rèn)值0,那么將不會受到約束。

復(fù)制代碼代碼如下:

echo 0 /proc/sys/vm/overcommit_memory

參考資料:

總結(jié):

說了這么多,那么為什么要修改內(nèi)核參數(shù)vm.overcommit_memory的值呢?這個是因?yàn)檫@臺服務(wù)器之前跑過GreenPlum數(shù)據(jù)庫,拿到我手上的時候沒有進(jìn)行重裝系統(tǒng),那么還是建議如果拿到的機(jī)器之前跑過其他的業(yè)務(wù),那么保險的方法還是重裝一下系統(tǒng),然后再部署自己的業(yè)務(wù),不然真的會出現(xiàn)莫名其妙的問題。

文章名稱:mysql怎么會報錯 mysql錯誤處理
本文URL:http://muchs.cn/article16/dosdddg.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供建站公司、全網(wǎng)營銷推廣、定制網(wǎng)站商城網(wǎng)站、品牌網(wǎng)站設(shè)計標(biāo)簽優(yōu)化

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)

成都做網(wǎng)站