在使用MySQL的過程中,有時候會遇到這個錯誤,當MySQL啟動的時候, 它必須去讀取設定檔,也就是my.ini,然後從my.ini得到所要啟動的相關 細節後,接著才啟動服務,有點像讀取相關configure。 當發生錯誤:1067的時候,原因是因為,my.ini檔案裡面的設定值,在原先 的MySQL,並無法達到它所要求的動作,所以,如果你記得你是更改了my.ini哪個 設定值,就馬上去把它改回來吧。 我曾經遇過一次經驗,罪魁禍首則是InnoDB在作祟,MySQL的InnoDB資料庫格式,用 兩個檔案儲存,一個是logfile,一個是datafile;當時會發生1067錯誤,是因為在 my.ini裡面,除了選擇啟動InnoDB格式的資料庫格式,但如果只選擇啟用,還不一定 會發生這樣的情形,會造成1067錯誤是因為,我們選擇了InnoDB為預設儲存格式,倘若 你覺得不一定要用InnoDB,你可以把my.ini裡的defaut-storage-engine=INNODB 這一行拿掉,但是這樣一來,你的原先資料都會從InnoDB改成MyISAM,MyISAM目前沒 提供外來鍵,關聯等的支援就是了。 網路上的流傳解決1067錯誤方法有下列幾種: 一、將所有的Datafile砍掉,這個地方就是你資料庫系統要存資料的地方,其實原先的   錯誤就從這裡延伸出去,倘若你光重灌MySQL而沒砍掉這些東西,原先的1067錯誤還是   有可能存在的,不過這樣的方法,將會使你的舊有資料完全不見了,就像痘痘一樣。 二、將原先和my.ini的鄰居,my-small.ini或是my-INNODB-heave-4G.ini這類的檔案,   改成my.ini,然後覆蓋原先的my.ini,其實my-small.ini這一類的檔案,是屬於官方   的預設檔案,你可以依照你的系統大小,來選擇這些檔案,譬如像my-small.ini,就是   給予低負載小系統,算是官方推薦的設定值,但值得注意的是,這些預設值,並沒有啟動   InnoDB,就算有選擇啟動,也沒把它當成預設儲存引擎,就算有選擇啟動,也有可能因為   啟動失敗,而你依然只能用MyISAM作為儲存引擎,我們一開始會選擇InnoDB作為預設引擎   ,是因為我們在GUI安裝介面就選擇了,所以才會在my.ini加上那行指令。 那為什麼會有可能因為InnoDB的關係,而造成1067錯誤?第一種可能是因為,我們在重灌MySQL 的時候,因為logfile的關係,而造成新的系統無法正確載入logfile,載入了舊的logfile,而 這個檔案的新設定又跟以前不一樣,所以它無法正確讀入;第二種可能是因為,我們在重新對MySQL 作設定時,在舊的那個服務,動到了以前的logfile,使它無法讀入,總言之,logfile是罪魁禍首 ,倘若你建立一個新的logfile,似乎還是會有問題,因為新的logfile不一定能讀到舊的datafile ,相反地,它還會建立一個新的datafile,而你得到的,還是新的空白,而舊的資料就像變了心的 女朋友,回不來了! 所以我使用了這種方法,首先,備份舊的datafile,並且把你的MySQL砍掉重練,原先的資料夾也一 並砍掉,在重新安裝系統時,MyDataFiles的存放位置,和原先的舊系統存放位置要一樣,然後把舊 的datafile覆蓋過去,覆蓋新的datafile,這樣一來,新的logfile是屬於正常沒問題的,它也會 乖乖的把你舊的datafile當新的讀入,這樣一來,你就可以解決1067錯誤,而舊的資料依然陪伴著你 。 當然,這只是我的作法,至於正不正確,我可不敢保證喔XD
文章標籤
全站熱搜
創作者介紹
創作者 via2k6 的頭像
via2k6

Flying

via2k6 發表在 痞客邦 留言(0) 人氣(4,132)