2011-03-17 69 views
1

運行此查詢時出現#1025錯誤。MySQL#1025錯誤

SQL查詢:

ALTER TABLE `routes` CHANGE `end_loc` `end_loc` VARCHAR(500) CHARACTER SET utf8 COLLATE utf8_bin NOT NULL 

MySQL表示:

#1025 - Error on rename of './ridestr/#sql-1f44_26eeb' to './ridestr/routes' (errno: 150) 

,因爲我成立了PHP MyAdmin此查詢這很有趣。我不知道爲什麼我得到一個外鍵錯誤...我只是想改變一些從int到varchar

任何人都可以幫忙嗎?

+0

errno:150通常意味着有一個外鍵問題 - 你可以請張貼你的結構查詢,所以我們可以幫助你更好? – BigFatBaby 2011-03-17 11:24:37

+0

您是否嘗試過在查詢之前禁用外鍵檢查,並在查詢後再次啓用它們? – 2011-03-17 14:10:00

回答

5

如果在外鍵中使用routes.end_loc列,則無法更改其數據類型。您將需要刪除外鍵,更改父列和子列的數據類型,然後再次添加外鍵。

有關此錯誤的詳細信息,請運行SHOW ENGINE INNODB STATUS\G,然後查看LATEST FOREIGN KEY ERROR部分。

0

但它是非常難,如果你想在整個字符集更改爲所有表 這裏的UTF8是我做過什麼

 1 export the database (all tables) and open by notepad 

    2 replace all "latin1" by utf8 and save 

    3 then try to restore using mysqlAdministrator but it says wrong 

    4 so try restoring again but you have to select ignore errors radio button 
    5 it tries to restore some tables 

    6 then you have to restore again until no error message 

我知道這是困難的方式,但我相信這將工作對你也