在使用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
arrow
arrow
    全站熱搜

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