重慶分公司,新征程啟航
為企業提供網站建設、域名注冊、服務器等服務
為企業提供網站建設、域名注冊、服務器等服務
恰當的使用IF語句,并在需要跳出循環時,將xxx設置成一個不可滿足的條件,那么到下一次循環時,自然不會再執行.
我們提供的服務有:做網站、網站制作、微信公眾號開發、網站優化、網站認證、措勤ssl等。為成百上千家企事業單位解決了網站和推廣的問題。提供周到的售前咨詢和貼心的售后服務,是有科學管理、有技術的措勤網站制作公司
有兩種方法,一種方法使用mysql的check table和repair table 的sql語句,另一種方法是使用MySQL提供的多個myisamchk, isamchk數據檢測恢復工具。前者使用起來比較簡便。推薦使用。
1. check table 和 repair table
登陸mysql 終端:
mysql -uxxxxx -p dbname
check table tabTest;
如果出現的結果說Status是OK,則不用修復,如果有Error,可以用:
repair table tabTest;
進行修復,修復之后可以在用check table命令來進行檢查。在新版本的phpMyAdmin里面也可以使用check/repair的功能。
2. myisamchk, isamchk
其中myisamchk適用于MYISAM類型的數據表,而isamchk適用于ISAM類型的數據表。這兩條命令的主要參數相同,一般新的系統都使用MYISAM作為缺省的數據表類型,這里以myisamchk為例子進行說明。當發現某個數據表出現問題時可以使用:
myisamchk tablename.MYI
進行檢測,如果需要修復的話,可以使用:
myisamchk -of tablename.MYI
關于myisamchk的詳細參數說明,可以參見它的使用幫助。需要注意的時在進行修改時必須確保MySQL服務器沒有訪問這個數據表,保險的情況下是最好在進行檢測時把MySQL服務器Shutdown掉。
-----------------------------
另外可以把下面的命令放在你的rc.local里面啟動MySQL服務器前:
[ -x /tmp/mysql.sock ] /pathtochk/myisamchk -of /DATA_DIR/*/*.MYI
其中的/tmp/mysql.sock是MySQL監聽的Sock文件位置,對于使用RPM安裝的用戶應該是/var/lib/mysql/mysql.sock,對于使用源碼安裝則是/tmp/mysql.sock可以根據自己的實際情況進行變更,而pathtochk則是myisamchk所在的位置,DATA_DIR是你的MySQL數據庫存放的位置。
需要注意的時,如果你打算把這條命令放在你的rc.local里面,必須確認在執行這條指令時MySQL服務器必須沒有啟動!檢測修復所有數據庫(表)
1. 首先你應該看下循環條件是否已經走完,
2. 其次看所插數據是否滿足表中的字段格式,再然后,看看SQL有沒有明顯的錯誤。
3. 如果檢查完還沒好,麻煩把SQL發我,我看下。
MYSQL確實不夠穩定不夠快,我做的系統剛換成SQLserver了!!至于你說的那個循環操作當然是沒什么問題了,前提是你的數據是不是海量數據(就是記錄很多),如果不是那就安心使用啦!!!只要你寫的代碼沒有邏輯錯誤呵呵,另外我說的數據過多會不穩定是指數據庫所有表整個記錄在50萬條以上,單表最多記錄5萬條,游標嵌套超過3層的情況,這個誰也沒規定,這是我幾個項目總結出來的實戰經驗而已,僅供參考!!!
CREATE?TABLE?test_AA?(
id??INT,
val?varchar(6)
);
INSERT?INTO?test_AA?VALUES(null,??'A');
INSERT?INTO?test_AA?VALUES(null,??'B');
INSERT?INTO?test_AA?VALUES(null,??'C');
INSERT?INTO?test_AA?VALUES(null,??'D');
INSERT?INTO?test_AA?VALUES(null,??'E');
SELECT?*?FROM?test_AA;
+------+------+
|?id???|?val??|
+------+------+
|?NULL?|?A????|
|?NULL?|?B????|
|?NULL?|?C????|
|?NULL?|?D????|
|?NULL?|?E????|
+------+------+
5?rows?in?set?(0.00?sec)
--?假設?id?從?101?開始.
SET?@rownum?=?100;
UPDATE?
test_AA
SET
id?=?(@rownum?:=?@rownum?+?1);
mysql?SELECT?*?FROM?test_AA;
+------+------+
|?id???|?val??|
+------+------+
|??101?|?A????|
|??102?|?B????|
|??103?|?C????|
|??104?|?D????|
|??105?|?E????|
+------+------+
5?rows?in?set?(0.00?sec)
當讀到 ] 的時候
scanf("%lf",response);
會返回失敗, 并且 ] 還在,
這樣, 循環就會一直在 ] 這里返回失敗,
于是就死循環了.
你可以看scanf函數的返回值的說明.