2017-06-26 11 views
0

データベーステーブルのユーザーに別の列を追加します。 Modify_users_tableという名前の新しい移行を作成しました。この移行には列を追加するコードがあります。前に使ったのでソースコードに何も問題はありませんが、テーブルの役割に何か問題があるというエラーが出ます。これをどうすれば解決できますか?ここでエラーがあると、ここでエラー enter image description hereマイグレーション中にLaravelエラーが発生しました

に関連しているコードは、移行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

(私はこの問題を持っていた手動初めてにそれをやった)データベースからテーブルを削除し、このよう

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

と、これは私のために働いたとしてcreate_users_table移行でこの変更を行う。..

これはあなたにも役立ちます。

2

あなたは多くの問題があります。あなたの主な問題は、テーブルに列を追加していないことです。あなたのスクリプトは、代わりにこのラインで見られるように、新しいテーブルを作成しようとしている:

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

あなたはユーザーテーブルに列を追加しようとしているが、あなたも、ユーザのテーブルで作業していないと述べました。代わりに既に存在するrolesというテーブルを作成しています。最も簡単な解決策は、Dhavalが示唆していることを実行することです。あなたが追加された移行を取り除き、ユーザーテーブルを作成する移行を更新してからやり直します。

"正しい"答えは、新しい移行を作成して、列をusersテーブルに追加する手順と、削除する手順を入れておくことです。それでは、あなたのデータベースを盗むのではなく、単純なマイグレーションを行うだけです。これは次のようになります:

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']); 
    }); 
} 
関連する問題