2013-01-03 18 views
-1

雖然在MySQL中更改表來添加一個新的列我得到致命錯誤..我看到了這個問題的相關答案,我找到了答案如下: -改變表給予致命的錯誤在Mysql

Make a new table with the same structure. 
Add the column to the new table. 
Insert the data from the old table into the new table. 
Rename the old table to old.bak 
Rename the new table to the old table. 
If all went well, delete the old.bak. 

但我原來的表中包含一些觸發器,索引等

我的問題是

「我可以寫我的知己腳本中的任何差異。方法來克服這一致命的錯誤」?

我擔心的是與MySQL有關的,但任何其他RDBMS相關答案也很好...

+0

我正在使用alter table語法: - 「ALTER TABLE table_name添加column_name數據類型(大小)」 – DreamSea

+0

您正在使用的新列添加的語法是什麼? – Zeina

+0

什麼是你使用的DataType? – Zeina

回答

0

這是MySQL的具體:您可以使用[SHOW CREATE TABLE tabname][1][SHOW TRIGGERS WHERE Table = 'tabname'][2]的組合來重新生成表和觸發器。當您複製行時,您可能不希望觸發器觸發。另外,如果表的大小很大或者您的變化率足夠高,則可能希望防止在複製過程中對其進行寫入。

的步驟序列:

  1. 防止寫入表(可選)
  2. SHOW CREATE TABLE輸出創建新表。
  3. 應用模式更改。
  4. 將舊錶中的數據複製到新表中。
  5. SHOW TRIGGERS輸出應用觸發器。
  6. 交換舊錶和新表。

希望這會有所幫助。

+0

我欣賞這個答案,但這是解決這類致命錯誤的唯一方法。我必須創建一個備份表,然後改變......如果有其他替代方案,那麼它會很好。感謝答案和評論。 – DreamSea