2013-01-18 110 views
0

我需要將我的表修改表數據類型從bigint改爲int,總共有200個表在數據庫中,但由於外鍵約束,我無法更改我的表。MySQL DROP所有表外鍵

我試過SET foreign_key_checks = 0;但它不適用於修改數據類型。

請告訴我有沒有其他的方式來修改表而不影響現有的表。

+5

..... 1.你輸入了什麼命令。 2.發生了什麼事。 3.「不起作用」是什麼意思。 4.如果您有任何錯誤,請在此處顯示。 5.您是否將所有行都更改爲int(因爲否則不能將外鍵保留) – Nanne

+0

+1問這樣的問題。不知道爲什麼人們給你-2 – neeraj

+0

+1因爲這是一個很好的問題。有一個答案 - 重新創建外鍵(見奧古斯托的答案)。所以,所有的表都必須手動重構,或者(可能)以某種方式生成重構SQL腳本。 – Devart

回答

1

這並不像您想象的那麼簡單。正如我所假設的那樣,你想改變的組合是表的主鍵的一部分。

因此,這些都是你需要的MySQL遵循

  • 丟棄所有的FKS表
  • 更新桌子上
  • 上的所有表有更新的數據類型數據類型的步驟一個FK到您想要更改的表格。
  • 重新創建所有FKS

除了我上面提到的,有沒有其他的方式來「欺騙」的MySQL更改列,它是一個PK/FK的一部分。

MySQL需要PK和FK中的列完全相同的數據類型,否則您將無法重新創建FK。