2017-10-13 174 views
0

我刪除了2個遷移文件,提交併推送了更改。現在,當我嘗試運行artisan migrate命令我得到一個錯誤:Laravel 4刪除遷移

[InvalidArgumentException] 
There are no commands defined in the "xyz" namespace. 

我也不能這樣做,因爲artisan migration:rollback我得到一個錯誤

{"error":{"type":"Symfony\\Component\\Debug\\Exception\\FatalThrowableError","message":"Class 'ClassNameXYZ' not found","file":"....vendor\/laravel\/framework\/src\/Illuminate\/Database\/Migrations\/Migrator.php","line":301}} 

所以現在我試圖運行composer dump-autoload和所有artisan關於清除緩存的命令,但是當我嘗試遷移時,我會得到同樣的結果。

我不能刪除數據庫,因爲這需要在生產分支上合併,所以如果我這樣離開它並刪除並重新設置數據庫,它只會在生產服務器上中斷。

我試着手動添加已刪除的遷移,然後composer dump-autoload,但當我試圖回滾時仍然收到相同的錯誤。

我也想取回先前提交回刪除遷移,而這樣做:

git checkout __COMMIT__ __FILENAME__ 

,但我得到兩個錯誤,或者:

error: pathspec '__FILENAME__' did not match any file(s) known to git. 

或:

fatal: __FILENAME__: '__FILENAME__' is outside repository 

我該如何解決這個問題?

編輯

我想過做一個git reset但遺憾的是在問題提交是最後一個了。最後一次提交是不再存在的分支的合併,所以如果我重置它,我將失去與最後一個分支合併的更改。

回答

0

我發現了一個錯誤。這是由於遷移調用自定義的artisan命令,該命令的名稱與我上次執行更改時的名稱不同。

我仍然不知道爲什麼git的問題發生,但現在還不是至關重要的。

0

我想你應該遵循下面的評論:

如果你刪除一個遷移類文件(XYZ),只需從遷移表中刪除記錄。並在運行命令php artisan migrate後。

+0

如果我這樣做,我會做同樣的生產服務器,在這一點上是不是一種選擇 – Norgul

+0

@Norgul上:因爲這個類在遷移表中添加,可能是每次影響 –