2010-03-26 80 views
18

我一直在嘗試CakePHP的一些遷移腳本,但我遇到了所有這些或其他形式的問題。CakePHP良好的數據庫遷移?

請給我一個關於您使用現場和已知作品的Cake的遷移選項的建議。

我想下面的「功能」:

  • 支持CakePHP的1.2(如CakeDCs遷移將只有一個選項時,1.3是穩定的,我的應用程序遷移到新的源代碼)
  • 支持(或者至少不停止)具有不同數據庫配置的模型。在app /型號的子文件夾
  • 支持模式在插件
  • 支持表不符合蛋糕公約(我有沒有一個單一的主鍵字段,需要一些特殊的表
  • 支持機型以保持它們)
  • 可以通過Capistrano和Git進行自動部署。

我不需要rails風格的版本控制文件一個git版本化的模式文件可以與現有模式相比較。那就是:我喜歡Cake中的SchemaShell,因爲它不符合我上面的大多數要求。

我已經看過並測試:

+0

+1,有趣的問題 – 2010-03-26 12:29:50

+0

通過忽略文檔並閱讀源代碼,我發現如何使Schema Shell完成我所需要的大部分工作。 我發現-f不會「強制」生成'來創建新的模式。「。它用於「強制生成所有表到模式中......」。 但不僅如此,這不在文檔中:它也可用於強制更新以與生成相同的方式忽略Model類,因此更新使用該選項生成的模式。 – 2010-03-26 13:35:54

+0

@Matin威斯汀 - 爲什麼不把這些見解貢獻給文檔維基? – stevenf 2010-03-26 16:47:54

回答

2

我有一個插件,使它成爲CakePHP 1.2,你可以看到http://github.com/jrbasso/migrations

它使用蛋糕的樣式來做所有的事情。不使用yaml,使用對象來定義表格。你可以從Cake導入模型沒有問題...

+0

很酷,我來看看。 – 2010-03-26 13:30:37

4

我試着用我的發現更新這個「主題」後,迅速嘗試Juan的插件和所有其他人提到的CakeEx除外...因爲我不' t已經爲CakePHP 1.3更新了相關應用程序,並且該遷移插件需要1.3

我必須注意,關於失敗和插件對我不起作用的評論應該主要讀作「不適合我的需要」或「我犯過的錯誤」同時嘗試他們「。在某種程度上,有些人可能會閱讀這樣的評論,以求對文件進行修改。我並不是說所測試的插件本身就存在缺陷,錯誤或損壞。我相信,他們都在適當的環境下工作,併爲正確的工作流程。

CakePHP的架構殼牌

  • 配有簡單的概念,我喜歡。 Schema鏈接到代碼和用於管理其修訂的SCM。

  • 很好的一點。這一點是:

  • 不適合自動部署。即更新命令只能修改表,不處理新的或已刪除的表。這些由他們自己的shell命令處理,使Cap-style部署變得複雜。當腳本嘗試「改變」不存在的表格時,用新表格運行更新也會產生錯誤。我注意到,如果這是有意的或我遇到的問題。 (問過的谷歌組沒有答覆還)

CakeDC遷移

  • 聽起來像他們拿着架構殼牌和「固定」它。文檔解釋了一個稍微複雜的過程(至少要解釋),但它可能會按我的意願工作。

YAML,joelmoss和胡安的遷移

  • 這些都共享的版本控制文件的軌道理念和「正在增加」以及它們之間的「擊落」。我更喜歡這一點,因爲當模式遷移將被更新或回滾而沒有對源代碼執行相同操作時,我無法看到我的項目的情況。我也可以生活在沒有遷移遷移腳本中的現有數據的能力,因爲我預見這對我來說非常罕見。

  • 這些都希望我不能通過遷移腳本以外的任何方式觸及數據庫。我無法打開我最喜歡的MySql-GUI並玩,直到我很高興,然後通過這些腳本生成「diff」。 (至少我在我的簡短測試中沒有找到記錄的方法。)我必須手動將更改寫入YAML或php文件。由於我開始使用大約30個表的現有項目,因此我不贊成手動重寫該模式的想法。但是其中一些插件並沒有創建一個包含我所有表格的好文件。這也可能是由於我的簡短測試和/或無法找到此功能的文檔。我沒有深入瞭解大多數這些源代碼。

我的下一步看起來是將我的項目更新到CakePHP 1.3並給出最後一個插件。但我不知道我什麼時候會有時間。 (即沒有任何人屏住呼吸)

如果您認爲我誤解了這些插件中的任何一個如何工作,並且可以提供關於如何使它們適用於我的命中。我很樂意回覆評論。

3

如果你喜歡Rails遷移,請使用Rails Migrations ...看看這個寶石https://github.com/thuss/standalone-migrations。我在日常工作中將這個寶石與cakephp一起使用。

+0

我是Ruby的粉絲。現在必須處理PHP項目。我希望Rails Migrations能夠讓我的工作變得簡單:) – 2012-10-25 17:48:54

0

在這裏使用3.x Migrations插件。

其他舊版工具的所有問題都是通過設計來確定的。 它正處於重大的發展階段,每週都會獲得更多功能並進行修復。

您還可以輕鬆使用現有的1.x和2.x應用程序的新工具。 順便說一下,我剛剛在how to use 3.x Migrations in 2.x apps上發佈了一篇文章。