程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 數據庫知識 >> MYSQL數據庫 >> 關於MYSQL數據庫 >> MySQL數據庫中與 ALTER TABLE 有關的問題

MySQL數據庫中與 ALTER TABLE 有關的問題

編輯:關於MYSQL數據庫

ALTER TABLE將表更改為當前字符集。如果在執行ALTER TABLE操作期間遇到重復鍵錯誤,原因在於新的字符集將2個鍵映射到了相同值,或是表已損壞。在後一種情況下,應在表上運行REPAIR TABLE。

如果ALTER TABLE失敗並給出下述錯誤,問題可能是因為在ALTER TABLE操作的早期階段出現MySQL崩潰,沒有名為A-xxx或B-xxx的舊表:

Error on rename of './database/name.frm'
to './database/B-xxx.frm' (Errcode: 17)

在該情況下,進入MySQL數據目錄,並刪除其名稱為以A-或B-開始的所有文件(或許你希望將它們移動到其他地方而不是刪除它們)。

ALTER TABLE的工作方式如下:

用請求的結構變化創建名為A-xxx的新表。

將所有行從原始表拷貝到A-xxx。

將原始表重命名為B-xxx。

將A-xxx重命名為原始表的名稱。

刪除B-xxx。

如果在重命名操作中出錯,MySQL將嘗試撤銷更改。如果錯誤很嚴重(盡管這不應出現),MySQL會將舊表保留為B-xxx。簡單地在系統級別上重命名表文件,應能使數據復原。

如果在事務性表上使用ALTER TABLE,或正在使用Windows或OS/2操作系統,如果已在表上執行了LOCK TABLE操作,ALTER TABLE將對表執行解鎖操作。這是因為InnoDB和這類操作系統不能撤銷正在使用的表。

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved