2012-06-01 58 views
1

我正在研究一個最近經歷升級的中型網站。在升級過程中,數據庫的各個部分沒有結轉。現在這個新網站已經投入使用了一個多月,而我的老闆想要將這些缺失的位整合回去。使用MySQL中的唯一ID衝突舊數據

有幾組表需要傳輸唯一的自動分配的主鍵ID 。生產數據庫中已經有衝突的鍵,所以我不能插入所有的行。

我想爲我的舊數據中的所有主鍵添加一個基數(可能是10000)。這將確保與新數據庫中已有的東西沒有衝突,但我不確定MySQL將如何反應。我也一直想知道是否有更好的和/或標準的方法來實現這一點。

什麼是插入我的數據的最佳方式?

+0

你能不能只添加除了密鑰ID列以外的所有信息,讓它自動接收一個新的ID? – Bit

+0

需要保留關係,所以我需要在主表和引用它的表中更新ID,並使它們保持同步。 – MrGlass

+1

我同意AlwaysLearning,你可以編寫一個遷移腳本,它將傳輸所有數據並處理關係 - 這樣你就可以正確傳輸所有數據,並且不需要搞亂自動增量 – Laimoncijus

回答

0

正如對我的問題的評論中所提到的,遷移腳本是要走的路。這可以是用於數據庫平臺的實際遷移腳本,也可以是您選擇的語言的腳本,該腳本從1個數據庫讀取並將數據添加到第2個數據庫。

像我在我的問題中描述的那樣添加「基數」是一個糟糕的主意,並且可能會導致在將來轉移時出錯。

我最終手動解決了衝突ID,這實際上是由於之前的開發人員試圖在早期遷移期間向所有ID添加基本號,而不是將不良重複數據引入數據庫。