2016-05-04 1 views
2

新しいマイグレーションファイルを作成しただけで、既存のテーブルに新しいカラムを挿入できます。laravel 5新しく作成したミラーファイルを実行すると、マイグレーションエラーが発生する

ファイルのコードは次のとおりです。

<?php 

use Illuminate\Database\Schema\Blueprint; 
use Illuminate\Database\Migrations\Migration; 

class AddStatusToPhoto extends Migration { 

    /** 
    * Run the migrations. 
    * 
    * @return void 
    */ 
    public function up() 
    { 
     Schema::table('photos', function(Blueprint $table) 
     { 
      $table->integer('status'); 
     }); 

    } 

    /** 
    * Reverse the migrations. 
    * 
    * @return void 
    */ 
    public function down() 
    { 
     // 
    } 


} 

が、私はPHPの職人の移行を実行すると、エラーメッセージがあります:問題が何であるかを

[Illuminate\Database\QueryException] 
    SQLSTATE[42S01]: Base table or view already exists: 1050 Table 'permission_ 
    role' already exists (SQL: create table `permission_role` (`id` int unsigne 
    d not null auto_increment primary key, `permission_id` int unsigned not nul 
    l, `role_id` int unsigned not null, `created_at` timestamp default 0 not nu 
    ll, `updated_at` timestamp default 0 not null) default character set utf8 c 
    ollate utf8_unicode_ci) 

誰を知っていますか?

+0

あなたの移行にこのコード行を入れ、 'ダウン()'内部の追加ドロップテーブルに持っていますか? –

+0

私はpermission_roleテーブルがロールバックされていないことに気付きました.Aldoを手動で削除すると、同じエラーがまだ残っています。 –

答えて

0

以前の移行の役割は半成功しました。つまり、テーブルpermission_roleが追加されましたが、早期に終了しました。そのため、移行は完了とマークされず、migrationsテーブルに追加されませんでした。 Permissions移行ファイルを再実行しようとしましたが、テーブルが既に存在するため失敗します。古い移行ファイルを手動でデータベースに追加するか、正常に実行されるようにする必要があります。

コードを削除するか、if文でラップすることができます。
Is there any way to detect if a database table exists with Laravel

0

テーブルがデータベースに物理的に存在しないこと、およびdown()メソッドにそのテーブルを削除できるコードが含まれていることを確認してください。

+0

これはコメントでなければなりません – ketan

0

"php artisan migrate:refresh"コマンドを使用する前に、コマンド「php artisan migrate」を使用して移行ローファイルを最初に記録し、ダウンメソッドを修正する必要があります。

migrate:refreshコマンドは、最初にすべてのデータベース移行をロールバックしてから、migrateコマンドを実行します。

php artisan migrate:refresh 

php artisan migrate:refresh --seed 

このdocumentationを参照してください:このコマンドは、効果的にあなたの全体のデータベースを再作成します。

+0

私はリフレッシュしようとしましたが動作しませんでした(また、すべてのデータを削除することを覚えていますか?)、最後にすべての古い移行ファイルを一時的に削除します – hkguile

0

あなたpermission_role移行スクリプトで

if(!Schema::hasTable('post')){ 
    Schema::create('post', function (Blueprint $table) { 
      $table->increments('id'); 
      #etc 
     }); 
} 
関連する問題