2017-06-26 78 views
0

我想向我的數據庫表用戶添加另一列。我進行了名爲Modify_users_table的新遷移,其中添加了該列的代碼。源代碼沒有問題,因爲我之前使用過它,但是它給了我一個錯誤,表中的角色出了問題?我該如何解決這個問題?以下是錯誤和相關的錯誤 enter image description hereLaravel嘗試遷移時出錯

這裏的代碼遷移Roles

public function up() 
{ 
    Schema::create('roles', function (Blueprint $table) { 
     $table->string('role_name')->length(55)->unique(); 
     $table->increments('id'); 
     $table->timestamps(); 
    }); 
} 
+0

這意味着您的角色表已經存在,但它不存在於'migrations'表中。找出發生的原因並通過回滾或重置進行修復。 (這將刪除表格中的所有現有數據) – Robert

+0

作爲一般的經驗法則,將錯誤作爲文本而不是截圖包含在內會更好。 –

回答

0

你需要運行

php artisan migrate:rollback 

如果還是失敗只是去並刪除所有可能必須執行的表,因爲看起來您的遷移表已經搞亂了,或者當您運行先前的回滾時您的角色表沒有刪除表。

,或者您可以使用migrate:reset命令將回滾所有應用程序的遷移:

php artisan migrate:reset 
-1

從數據庫中刪除表(我做的手工,我第一次有這個問題)

和使在create_users_table遷移這一變化如此

$table->string('email', 60)->unique(); 

這個工作對我來說..

希望這對你有所幫助

2

你有很多問題。你的主要問題是你沒有添加一列到表中。你的腳本,而不是試圖建立一個新表,因爲在這條線上看到:

Schema::create('roles', function (Blueprint $table) { 

你說你正試圖添加到用戶表中的列,但你甚至與用戶的表工作不是:您需要創建一個名爲roles的表格,該表格已經存在。最簡單的解決方案就是做達瓦爾的建議:消除你添加的遷移,更新創建用戶表的遷移,重新開始。

「正確」的答案是創建一個新的遷移,並將說明添加到用戶表的列以及刪除它的說明。然後你可以做一個簡單的遷移,而不是讓你的數據庫受到影響。這看起來像這樣:

public function up() 
{ 
    Schema::table('users', function (Blueprint $table) { 
     $table->string('last_name')->after('first_name')->default(''); 
    }); 
} 

public function down() 
{ 
    Schema::table('users', function (Blueprint $table) { 
     $table->dropColumn(['last_name']); 
    }); 
}