2009-10-06 31 views
1

好吧,假設你有兩個dbs。一個用作主模板,經過各種修訂,假設我們現在處於修訂版本3中,但第二個數據庫是模板的副本,因爲它處於修訂版本1處。你如何更新整個MySQL數據庫的結構?

因爲db 2正在使用,你不想放棄任何表,但你需要對整個數據庫的結構更新到數據庫1.

的最新版本是有這樣做的任何方法,而不必手動經歷,使所有相同的變化一次又一次(通過各種版本的許多dbs)並且不會丟失任何數據?

我知道數據完整性是問題,因爲一些數據可能不再是有效的等等,但沒有一種方法來覆蓋呢?

理想情況下,我只是希望能夠使用db 1結構的mysqldump,並使用db 1中的新版本覆蓋db 2中的任何衝突表而不丟失所有數據。如果有什麼辦法可以在phpmyadmin中做到這一點,那將是盛大的。

回答

2

您可以試試MySQL workbench;它允許你

  1. 從MySQL數據庫創建模式。
  2. 通過反向工程,將數據庫版本3,
  3. 導入到MySQL工作臺,然後將其與數據庫版本1中的模式進行比較以生成SQL alter腳本。
+0

我如何比較工作臺中的模式? – simonhamp 2009-10-06 14:09:10

+0

文件 - >正向工程 - >創建改變腳本。或者像這樣的東西 – Graviton 2009-10-06 14:43:44

+0

@Graviton FYI,那個鏈接是一個不存在的西部數據產品。 https://www.mysql.com/products/workbench/ – toast 2017-11-07 22:21:37

0

要麼你的數據庫連接器爲你做了這些(一些Python框架可以演變一個數據庫),或者你必須手動完成。

如果你必須做手工,最好的辦法是能夠與來自腳本時的一些數據來創建整個數據庫。這必須是完全自動的。創建基本版本後,您可以在腳本之後應用腳本來演變數據庫(更改表格等)。

在自動測試中做到這一點,安裝在客戶的網站的下一個版本的時候可以自動遷移數據庫。