最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

如何使用myisamchk和mysqlcheck工具快速修復(fù)損壞的MySQL數(shù)據(jù)庫文件

 更新時間:2020年01月22日 22:25:31   投稿:mdxy-dxy  
有時候數(shù)據(jù)庫突然就壞了很郁悶,用mysqlcheck.exe可以修復(fù)受損數(shù)據(jù)庫

由于服務(wù)器的數(shù)據(jù)庫硬盤空間滿了,由于大量寫入數(shù)據(jù)失敗導(dǎo)致了出現(xiàn)“Duplicate entry '' for key 'username'”的錯誤。

如果,出現(xiàn)這樣的mysql數(shù)據(jù)庫錯誤很可能是mysql數(shù)據(jù)庫索引出了問題。那么,什么是mysql數(shù)據(jù)庫索引?

分析:索引如果是primary unique這兩兩種,那么數(shù)據(jù)表的數(shù)據(jù)對應(yīng)的這個字段就必須保證其每條記錄的唯一性。否則就會產(chǎn)生這個錯誤。

一般發(fā)生在對數(shù)據(jù)庫寫操作的時候,例如Discuz!4.1論壇程序要求所有會員的用戶名username必須唯一,即username 的索引是unique,這時如果強(qiáng)行往cdb_members表里插入一個已有的username的記錄就會發(fā)上這個錯誤,或者將一條記錄的username更新為已有的一個username。

比如某網(wǎng)友的dedecms網(wǎng)站出問題了,訪問一看,果然全屏報錯,檢查mysql日志,錯誤信息為:

Table .dedecmsv4dede_archives is marked as crashed and should be repaired

提示說cms的文章表dede_archives被標(biāo)記有問題,需要修復(fù)。

于是趕快恢復(fù)歷史數(shù)據(jù),上網(wǎng)查找原因。最終將問題解決。

解決方法如下:

找到mysql的安裝目錄的bin/myisamchk工具,在命令行中輸入:

myisamchk -c -r ../data/dedecmsv4/dede_archives.MYI

然后myisamchk 工具會幫助你恢復(fù)數(shù)據(jù)表的索引。重新啟動mysql,問題解決。

那么,修復(fù)mysql數(shù)據(jù)庫一般可以myisamchk工具或者mysqlcheck工具用這二種方法:

1、myisamchk工具

使用 myisamchk 必須暫時停止 MySQL 服務(wù)器。例如,我們要檢修 discuz 數(shù)據(jù)庫。執(zhí)行以下操作:

# service mysql stop (停止 MySQL );

# myisamchk -r /數(shù)據(jù)庫文件的絕對路徑/*MYI

# service mysql start

myisamchk 會自動檢查并修復(fù)數(shù)據(jù)表中的索引錯誤。

2、mysqlcheck工具

使用 mysqlcheck 無需停止 MySQL ,可以進(jìn)行熱修復(fù)。操作步驟如下:

# mysqlcheck -r discuz.*

# service mysql stop (停止 MySQL );

# myisamchk -r /數(shù)據(jù)庫文件的絕對路徑/*MYI

# service mysql start

myisamchk 會自動檢查并修復(fù)數(shù)據(jù)表中的索引錯誤。

注意:無論是 myisamchk 還是 mysqlcheck ,一般情況下不要使用 -f 強(qiáng)制修復(fù),-f 參數(shù)會在遇到一般修復(fù)無法成功的時候刪除部分出錯數(shù)據(jù)以嘗試修復(fù)。所以,不到萬不得已不要使用 -f。

下面是其它網(wǎng)友的補(bǔ)充

檢查修復(fù)所有數(shù)據(jù)庫:

# mysqlcheck -A -o -r -p 
Enter password: 
db1  OK 
db2  OK  
db3  OK 
db4  OK 
...... 
...... 
...... 

修復(fù)指定的數(shù)據(jù)庫用 

# mysqlcheck  -o -r Database_NAME -p 

即可

命令詳解:

mysqlcheck客戶端可以檢查和修復(fù)MyISAM表。它還可以優(yōu)化和分析表。
mysqlcheck的功能類似myisamchk,但其工作不同。主要差別是當(dāng)mysqld服務(wù)器在運(yùn)行時必須使用mysqlcheck,而myisamchk應(yīng)用于服務(wù)器沒有運(yùn)行時。使用mysqlcheck的好處是不需要停止服務(wù)器來檢查或修復(fù)表。
Mysqlcheck為用戶提供了一種方便的使用SQL語句CHECK TABLE、REPAIR TABLE、ANALYZE TABLE和OPTIMIZE TABLE的方式。它確定在要執(zhí)行的操作中使用使用哪個語句,然后將語句發(fā)送到要執(zhí)行的服務(wù)器上。
有3種方式來調(diào)用mysqlcheck:

shell> mysqlcheck[options] db_name [tables]
shell> mysqlcheck[options] ---database DB1 [DB2 DB3...]
shell> mysqlcheck[options] --all--database

如果沒有指定任何表或使用---database或--all--database選項,則檢查整個數(shù)據(jù)庫。
同其它客戶端比較,mysqlcheck有一個特殊特性。重新命名二進(jìn)制可以更改檢查表的默認(rèn)行為(--check)。如果你想要一個工具默認(rèn)可以修復(fù)表的工具,只需要將mysqlcheck重新復(fù)制為mysqlrepair,或者使用一個符號鏈接mysqlrepair鏈接mysqlcheck。如果調(diào)用mysqlrepair,可按照命令修復(fù)表。

下面的名可用來更改mysqlcheck的默認(rèn)行為:

mysqlrepair

 默認(rèn)選項為--repair
 
mysqlanalyze
 默認(rèn)選項為--analyze
 
mysqloptimize
 默認(rèn)選項為--optimize
 
mysqlcheck支持下面的選項:
·         ---help,-?
顯示幫助消息并退出。
·         --all--database,-A
檢查所有數(shù)據(jù)庫中的所有表。與使用---database選項相同,在命令行中命名所有數(shù)據(jù)庫。
·         --all-in-1,-1
不是為每個表發(fā)出一個語句,而是為命名數(shù)據(jù)庫中待處理的所有表的每個數(shù)據(jù)庫執(zhí)行一個語句。
·         --analyze,-a
分析表。
·         --auto-repair
如果某個被檢查的表破壞了,自動修復(fù)它。檢查完所有表后自動進(jìn)行所有需要的修復(fù)。
·         --character-sets-dir=path
字符集的安裝目錄。參見5.10.1節(jié),“數(shù)據(jù)和排序用字符集”。
·         --check,-c
檢查表的錯誤。
·         --check-only-changed,-C
只檢查上次檢查以來已經(jīng)更改的或沒有正確關(guān)閉的表。
·         --compress
壓縮在客戶端和服務(wù)器之間發(fā)送的所有信息(如果二者均支持壓縮)。
·         ---database,-B
處理數(shù)據(jù)庫中命名的所有表。使用該選項,所有字名參量被看作數(shù)據(jù)庫名,而不是表名。
·         ---debug[=debug_options],-# [debug_options]
寫調(diào)試日志。debug_options字符串通常為'd:t:o,file_name'。
·         --default-character-set=charset
使用charsetas默認(rèn)字符集。參見5.10.1節(jié),“數(shù)據(jù)和排序用字符集”。
·         --extended,-e
如果你正使用該選項來檢查表,可以確保它們100%地一致,但需要很長的時間。
如果你正使用該選項來修復(fù)表,則運(yùn)行擴(kuò)展修復(fù),不但執(zhí)行的時間很長,而且還會產(chǎn)生大量的垃圾行! 
·         --fast,-F
只檢查沒有正確關(guān)閉的表。
·         --force,-f
即使出現(xiàn)SQL錯誤也繼續(xù)。
·         --host=host_name,-h host_name
連接給定主機(jī)上的MySQL服務(wù)器。
·         --medium-check,-m
執(zhí)行比--extended操作更快的檢查。只能發(fā)現(xiàn)99.99%的錯誤,在大多數(shù)情況下這已經(jīng)足夠了。
·         --optimize,-o
優(yōu)化表。
·         --password[=password],-p[password]
當(dāng)連接服務(wù)器時使用的密碼。如果使用短選項形式(-p),選項和 密碼之間不能有空格。如果在命令行中--password或-p選項后面沒有 密碼值,則提示輸入一個密碼。
·         --port=port_num,-P port_num
用于連接的TCP/IP端口號。
·         --protocol={TCP | SOCKET | PIPE | MEMORY} 
使用的連接協(xié)議。
·         --quick,-q
如果你正使用該選項在檢查表,它防止掃描行以檢查錯誤鏈接的檢查。這是最快的檢查方法。
如果你正使用該選項在修復(fù)表,它嘗試只修復(fù)索引樹。這是最快的修復(fù)方法。
·         --repair,-r
執(zhí)行可以修復(fù)大部分問題的修復(fù),只是唯一值不唯一時不能修復(fù)。
·         --silent,-s
沉默模式。只打印錯誤消息。
·         --socket=path,-S path
用于連接的套接字文件。
·         --tables
覆蓋---database或-B選項。選項后面的所有參量被視為表名。
·         --user=user_name,-u user_name
當(dāng)連接服務(wù)器時使用的MySQL用戶名。
·         --verbose,-v
冗長模式。打印關(guān)于各階段程序操作的信息。
·         --version,-V
顯示版本信息并退出。

相關(guān)文章

  • MySQL函數(shù)講解(MySQL函數(shù)大全)

    MySQL函數(shù)講解(MySQL函數(shù)大全)

    MySQL函數(shù)大全和函數(shù)講解,管理MYSQL數(shù)據(jù)一定會用到
    2013-11-11
  • MySQL之存儲過程按月創(chuàng)建表的方法步驟

    MySQL之存儲過程按月創(chuàng)建表的方法步驟

    這篇文章主要介紹了MySQL之存儲過程按月創(chuàng)建表的方法步驟,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-09-09
  • MySQL?8.0.29?安裝配置方法圖文教程(windows?zip版)

    MySQL?8.0.29?安裝配置方法圖文教程(windows?zip版)

    這篇文章主要為大家詳細(xì)介紹了windows?zip版MySQL?8.0.29?安裝配置方法圖文教程,文中安裝步驟介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2022-06-06
  • MYSQL中的json數(shù)據(jù)操作代碼

    MYSQL中的json數(shù)據(jù)操作代碼

    這篇文章主要介紹了MYSQL中的json數(shù)據(jù)操作,主要包括基礎(chǔ)查詢操作,JSON函數(shù)操作,本文通過實例代碼給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2022-09-09
  • 麒麟系統(tǒng)上安裝?MySQL?8.0.24的詳細(xì)步驟(避坑指南)

    麒麟系統(tǒng)上安裝?MySQL?8.0.24的詳細(xì)步驟(避坑指南)

    這篇文章主要介紹了麒麟系統(tǒng)上安裝MySQL8.0.24的詳細(xì)步驟,本文給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2023-08-08
  • VPS下修改MySQL root用戶密碼的方法

    VPS下修改MySQL root用戶密碼的方法

    VPS下修改MySQL root用戶密碼的方法,需要的朋友可以參考下。
    2010-12-12
  • Linux安裝MySQL的教程

    Linux安裝MySQL的教程

    這篇文章主要介紹了Linux安裝MySQL的教程,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2025-03-03
  • mysql8.0主從復(fù)制搭建與配置方案

    mysql8.0主從復(fù)制搭建與配置方案

    MySQL主從復(fù)制是一個異步的復(fù)制過程,就是有兩個數(shù)據(jù)庫服務(wù)器,一個是主(master)數(shù)據(jù)庫服務(wù)器,另一個是從(slave)數(shù)據(jù)庫服務(wù)器。
    2022-09-09
  • MySQL ifnull()函數(shù)的具體使用

    MySQL ifnull()函數(shù)的具體使用

    本文主要介紹了MySQL ifnull()函數(shù)的具體使用,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2022-08-08
  • MYSQL比對版本號字符串的方法實例

    MYSQL比對版本號字符串的方法實例

    因為mysql的版本較多,所以最近也踩了一個因為版本號字符串的坑,下面這篇文章主要給大家介紹了關(guān)于MYSQL比對版本號字符串的相關(guān)資料,文中通過實例代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2022-05-05

最新評論

耿马| 瑞昌市| 西宁市| 南宫市| 巴彦淖尔市| 淮北市| 关岭| 襄垣县| 武汉市| 平山县| 静宁县| 承德县| 新邵县| 江城| 杭州市| 安乡县| 秀山| 五家渠市| 丰台区| 仪陇县| 陕西省| 阳江市| 泾川县| 隆昌县| 通江县| 连州市| 绥芬河市| 西乌| 乐都县| 乐陵市| 壶关县| 日土县| 儋州市| 临武县| 泸溪县| 岳阳县| 河曲县| 江西省| 连城县| 临洮县| 柏乡县|