2016-02-08 144 views
0

我在這裏遇到了一個非常糟糕的情況,正在致力於Laravel 5項目。此前由其他開發人員開發。該開發人員在開始時使用migration generators創建了幾個表格,並使用遷移添加了一些columns。之後,他直接使用一些sql GUI添加了表columns。我得到了我導入的sql dump,並將其設置在我的本地機器上,現在當我創建table使用php artisan make:migration create_myTableName_table --create="myTableName"表遷移已成功創建,但是,當我做了php artisan migrate它給了我SQLSTATE[42S01]: Base table or view already exists: 1050 Table 'someTable' already exists我檢查了遷移文件夾並將它與目前版本的someTable,我可以看到列是不同的,與其他表一樣。不完全遷移 - 停留在生成新遷移

在這種情況下應該如何處理這種情況,我想跟上Laravel migrations generator,以便將來如果任何其他開發人員想要在此項目上工作,他只需運行遷移命令來遷移數據庫或創建表或創建列...我應該重新編寫所有遷移?請求幫助。謝謝

回答

1

又快又髒?

刪除當前遷移文件。清除migrations表並導出整個數據庫。將SQL轉儲放入回購站並指示其他開發人員在運行php artisan migrate之前將其導入。導入的轉儲和migrations表被截斷後,您可以創建新的遷移,而不會與舊遷移產生進一步的衝突。

感覺雄心勃勃?

使用像migrations-generator這樣的包根據您當前的數據庫結構生成遷移。然後,遷移。

+0

如果您刪除當前的遷移並截斷遷移表,那麼雄心勃勃的方式可能與快速和骯髒的方式一樣快。 – user3158900

1

考慮到您的情況,我會將.sql export導出到您的存儲庫中,清除舊的損壞的遷移並創建一個最初導入數據庫轉儲的新遷移。然後就像往常一樣創建遷移。