幻女free性zozo交孩交/亚洲成人直播/日本视频免费/国产国语videosex另类

Mysql數據庫報錯修復方法總結

2014-01-07 22:58:52 來源:華軍數據恢復 作者:網站管理員 閱讀:

MySQL數據庫

        一般在數據庫在突然斷電,強行關閉數據庫軟件,存儲過程異常等等情況下,數據庫很容易出現報錯,也是計算機維護員很頭疼的事。今天筆者同大家分享關于Mysql數據庫報錯故障和數據庫修復的方法總結。

1. phpMyAdmin連接mysql出現錯誤

使用phpMyAdmin 連接MySql數據庫時出現如下錯誤:#1251 - Client does not support authentication protocol requested by server; consider upgrading MySQL client
錯誤原因:原因是因為你使用的mysql服務器版本中使用了新的密碼驗證機制,這需要客戶端的版本要在4.0以上,原來的密碼函數被改為old_password ();,這樣使用Password()生成的密碼在舊的版本上的客戶端就不好使了,而PHP中的MYSQL客戶端都是3.23的(當然,mysqli的擴展除外),問題就在這了。這種問題只在Mysql 4.1.x以上的版本才會出現的。
修復辦法:a) 升級mysql  客戶端的版本;b) 也可以在服務器上用old_password函數,將用戶的密碼重新設置一下,具體的方法是:mysql>set password for 'root'@'localhost'=old_password('123');   然后就可以用舊版本的客戶端來連接了。
 
2. mysql 啟動指定my.cnf文件路徑
 
要使用指定的my.cnf文件,而不用默認的/etc/my.cnf文件,可以在啟動時,在mysqld_safe 后加上參數--defaults-file=/usr/local/server/mysql2/etc/my.cnf,但是要注意的是,主參數必需緊接著mysqld_safe 后面,如果做第二個以后的參數加入時,則會出現如下錯誤:/usr/local/server/mysql/libexec/mysqld: unknown variable 'defaults-file=/usr/local/server/mysql2/etc/my.cnf' 且服務器啟不來。
 
3. 當啟動innodb錯誤
 
InnoDB: Error: log file ./ib_logfile0 is of different size 0 5242880 bytes
InnoDB: than specified in the .cnf file 0 268435456 bytes!
100204 15:24:39 [ERROR] Plugin 'InnoDB' init function returned error.
出現這個錯誤的原因是$datadir下的ibdata1和ib_logfile*文件的大小與my.cnf指定的大小不一至造的,可以將這幾個文件刪除掉,然后重啟mysql,讓其重新生成這些文件。
 
4. mysql建立,查看和刪除自定義函數
 
查看:SHOW FUNCTION STATUS;可以列出某個數據庫所弄有的自定義函數   show create function 函數名; 查出自定義函數的內容;
建立:set global log_bin_trust_function_creators=1  設置上述的變量值為1,否則在建立時會出現如下錯誤:This function has none of DETERMINISTIC, NO SQL, or READS SQL DATA in its declaration and binary logging is enabled (you *might* want to use the less safe log_bin_trust_function_creators variable)
   這是因為我們啟用了bin-log日志的的原因
   Delimiter $$設置語句的分隔符,也就是一個語句的結束符,因為默認情況下,mysql 的語句結束符是; 而我們在建立自定義函數,可能要使用這個;號,所以我們需要將分隔符換成其它們的。,這里換成$$ CREATE DEFINER=`root`@`` FUNCTION `sseq`(seq_name VARCHAR(50)) RETURNS int(11) BEGIN DECLARE value INTEGER; SET value = 0; SELECT current_value INTO value FROM sequence WHERE name = seq_name; RETURN value; END $$ ,建立一個自定義的函數 sseq
執行:要執行上述函數,可以使用下列方法 select sseq('poi_seq');
刪除:drop function sseq ;
 
5. mysql建立,查看和刪除過程
 
建立:delimiter $$
create procedure insert_last(out cnt int) 
begin 
declare maxid int; 
select max(id)+1 into maxid from account; 
insert into account(id,name) values(maxid,'hello'); 
select count(id) into cnt from account; 
END$$
查看:show procedure status ;
show create procedure insert_last;
執行: call insert_last(@a)
刪除: drop procedure insert_last;
 
6. 當出現ERROR 1449錯誤
 
現象:當在系統中執行查詢時,特別是執行自定義函數或過程時,出現如下錯誤:ERROR 1449 (HY000): The user specified as a definer ('root'@'') does not exist
原因:系統中不存在root@用戶,而執行上述命令時,使用的剛好是root@用戶,所以就報上述錯誤;
修復:執行下列語句,建立對應的用戶即可: grant all on *.* to root@% identified by 'admin8*';
 
7. mysql 指定監聽指定的IP地址
 
默認的情況,mysql 在啟動時會監聽本機的所有的IP地址的3306端口,當為滿足某些要求時,可以指定mysql 在啟動時監聽指的IP,方法是:在my.cnf文件里的mysqld段里添加bind-address    = 122.224.72.119,這樣就可以只監聽指定的一個IP了。目前mysql 還不能做做監聽多個指定的IP 地址 
 
8. 關于mysql的版本號
 
以下是關于mysql版本號的含義,例如mysql-5.1.42版本的,其中5 :表示主版本號和文件格式。所有mysql 5系列的都具有相同的文件格式;第二個數字1:表示發布的版本號。主版本號和發布版本號聯合起來組成發布序列號;第三個數字42:表示某個發布序列里的版本號。這個版本號會隨著每次版本的發布而增加。通常應該選擇序列里的最近的版本進行使用。每次較小的更新,版本序列號中的最后一個數字會增加。當有大的新特性或者更新內容與前面一個版本不兼容時,第二個數字會增加的。而當文件格式改變的時候,第一個數字會增加的。
   版本名稱中還可能包含一個后綴來表示發布版本的穩定性的。在發布的系列版本中有一套后綴來表示穩定性改進,這些后綴包括:
Alpha:表示這個版本僅是一個演示版本。已知的bug已經被記錄了。大多數的alpha版本都添加了新的命令和擴展。
Beta:表示這個版本可以用在開發環境中。在測試版中,特性和兼容性問題可能已經被解決了,但是測試版本中可能會存未標識的bug。且這個版本中的所有API,擴展的結構,SQL語法在beta版本的后續版本中都不會被改變。
Rc: 表示待發行版。待發行版確信是穩定的版本,而且在MySQL內部進行的測試都通過了,同時,所有已知的運行期的重大Bug都被修正了。然而,這個版本并沒有經過長期大范圍的使用,以確認所有的bug都被標識了。
沒有任何后綴:表示這個版本是通用版本(GA)或者產品版本。GA版是穩定的版本,并且成功的進行前面幾個版本的過程,而且確信是可靠的,沒有緊急的bug,同時適合應用于生產環境中。
 
9. 關于mysql編譯與性能的關系
 
1. 在linux平臺上,如果編譯成動態連接的(即沒有使用-static選項),那么要慢13%。但是要注意:為滿足客戶應用的需要,可能還是需要編譯動態連接的;
2. 對于服務器和客戶端在同一臺機器上的連接,如果使用TCP/IP連接要比使用socket連接性能低7.5%(在unix平臺上,如果連接的主機名用localhost,MySQL默認使用socket文件來連接);
3. 如果使用TCP/IP連接,客戶端和服務器端不在同一臺機器上要比在同一臺機器上慢8%-10%,即使用網卡的速度高于100Mb/s;
4. 使用安全連接(所有數據使用內部SSL支持的加密)性能要比非安全連接低55%;
5. 在Sun UltraSPARC 平臺上,使用Forte5.0來編譯要比使用gcc3.2編譯后的快4%;
6. 在Sun UltraSPARC平臺上,使用Forte5.0編譯成32模式要比編譯成64模式快4%;
7. 在Linux X86平臺上,使用不帶gcc的框架指針(即不使用-fomit-frame-pointer 或 –fomit-frame-pointer –ffixed-ebp),將會使用mysqld快1%-4%;
 
10. 設置最大連接數
 
1)入MYSQL安裝目錄 打開MYSQL配置文件 my.ini 或 my.cnf查max_connections=100 修改為 max_connections=1000 服務里重起MYSQL即可;
2)MySQL的最大連接數默認是100客戶端登錄:mysql -uusername -ppassword設置新的最大連接數為200:mysql> set GLOBAL max_connections=200
 
        以上是關于常見Mysql數據庫報錯故障和數據庫修復的方法總結,希望對網友有點幫助!
  • 華軍行數據恢復 - 最新圖文資訊
  • 最新資訊導讀
  • 推薦內容
  • 熱點內容
CopyRight2014-2016 華軍數據恢復中心 版權所有 浙ICP備15017254號-4 成功案例 | 華軍資訊 | 技術專題 | RSS地圖