2017-08-13 177 views
1

enter image description here我以前創建了用戶表。現在我創建了一個新的遷移,在我的模式中創建一個新書籍表。當我嘗試運行命令laravel遷移不起作用

PHP工匠遷移 它讓我看到:

[照亮\數據庫\ QueryException] SQLSTATE [42S01]:基表或視圖已經存在:1050表 '用戶' ALRE 安以軒存在(SQL:CREATE TABLE usersid INT無符號不爲空auto_incr EMENT主鍵,username VARCHAR(255)不爲空,email VARCHAR(255)N OT空,password VARCHAR(255)不爲空,created_at時間戳默認0 不爲空,updated_at時間戳默認爲0 NOT NULL)默認字符集 UTF8整理utf8_unicode_ci)

我的問題是一樣的爲2和代碼,我跑是一樣的好。 所以,我已經嘗試了所有在這裏建議的解決方案。但他們不爲我工作。因爲我不能在帖子上發表評論,我必須將其作爲一個新問題發佈。希望你會意識到我的關注並幫助我出。

+0

分享遷移代碼。看起來你正在創建'users'表。 –

+0

我想你沒有從遷移表創建用戶表。檢查你的遷移表。或者在ur終端運行'php artisan migrate:status'。 –

+0

這裏是我的遷移表代碼: 公共功能了(){ 架構 ::創建( '任務',函數(藍圖$表){$ 表 - >增量( '身份證'); $ 表 - > text('body'); $ table-> increment('user_id'); $ table-> timestamps(); }); } –

回答

2

謝謝你的結果!

在這種情況下,您可以刪除所有表格,並重做php artisan migrate

如果您不想這樣做,您可以將已創建的遷移文件名的記錄插入到您的migrations表中,然後運行php artisan migrate

在這種情況下,您不需要刪除表格。

例如,您似乎創建了users表,因此請插入如下所示的migration2014_10_12_000000_create_users_table的記錄。

enter image description here

然後,當你運行php artisan migrate:status,您將得到如下結果。

enter image description here

,如果是這樣的話,如果你運行php artisan migratemigration文件後2014_10_12_200000_create_password_resets_table將被執行。

這樣,你應該插入已經創建的migration文件名的記錄,然後運行php artisan migrate,它會工作的很好!

P.S.

由於@mschuett在Laravel Migration table already exists but i want to add new not the older中說,您的migrations表被搞亂了。

因爲,您的數據庫中有users表,但不會執行2014_10_12_00000_create_users_table的遷移。

如果存在多個遷移文件,如果您運行它並且某處出現故障,則migration狀態爲您運行的位置Y

+0

我已經刪除了所有的數據庫從MySQL,然後當我運行PHP工匠遷移它只顯示用戶和重置密碼錶。我手動創建的其他表不在mysql數據庫中。 –

+0

問題解決了。謝謝 :) –

1

如您的屏幕截圖所示,您的任何遷移都沒有實際運行。您必須手動創建了users表,或者您可能運行了遷移,但不知何故被搞砸了。

如果你不介意丟失任何數據表中,最簡單的解決方法是(你將失去​​你的表中的所有數據!):

php artisan migrate:refresh 

這將回滾所有遷移,並再次運行它們。

More info in the docs

1

php artisan migrate:refresh將刪除所有數據並重新創建表,而migrate只是創建尚不存在的表。

如果只刷新一些表(如果遷移不起作用),幫助我刪除遷移表中的這些表和錶行,並進一步成功地執行php artisan migrate。 (尚未在4.2版本上試用,但也可能適用於高版本)