2012-01-18 41 views
2

我最近注意到,在我的一個數據庫中有幾個bigint類型字段可以用類型「int」替換。問題是數據庫已經聯機並且正在使用,並且還有外鍵正在使用,所以當我嘗試更改脫機DB中的數據類型時,mysql不會讓我產生錯誤消息:「#1025 - 重命名錯誤(...)「。如何在mysql中將bigint更改爲int,使用帶有外鍵的表

那麼如何在保持外鍵快樂的同時更改這些字段呢? (並且不擦除現有的數據庫!)

+0

你爲什麼要改變它們?你是否遇到性能問題? – 2012-01-18 18:01:25

+0

還沒有,但我恐怕最終會。此外,現在做這件事比以後有更多的數據更好。 – 2012-01-20 19:54:22

回答

0

當它保存數據時,不能減小字段的大小。你只能擴展它們。 你可以做的是導出所有數據,禁用鍵,清空表格,改變字段大小&再次導入數據。

+0

謝謝,我會試試看。 – 2012-01-20 19:55:16

0

你可以嘗試:

  1. 添加新列適當類型。
  2. 將舊列中的值複製到新列中。
  3. 重命名列。
  4. 更新約束(可能分兩步執行 - DROPCREATE)。
  5. 刪除舊列。
1

只要列中沒有任何數據不適合較小的INT數據類型,就可以將列從BIGINT更改爲INT。

ALTER TABLE mytable MODIFY COLUMN mycolumn INT(11);

+0

感謝您的幫助,但這個問題現在已經超過3年了。我甚至不記得我在說什麼數據庫。 :) – 2015-03-20 11:13:09

相關問題