私は2つのテーブルbadges
とcounselors
を持っています。私のテストはすべて緑色でした。私はbadge_counselor
という3番目のテーブル、ピボットテーブルを追加しました。ここでは、移行は次のとおりです。ラーバルのphpunitテストは正しく移行されません
use Illuminate\Support\Facades\Schema;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Database\Migrations\Migration;
class CreateBadgeCounselorTable extends Migration {
/**
* Run the migrations.
*
* @return void
*/
public function up()
{
Schema::create('badge_counselor', function (Blueprint $table) {
$table->increments('id');
$table->integer('badge_id')->unsigned();
$table->integer('counselor_id')->unsigned();
$table->foreign('badge_id')->references('id')->on('badges')->onDelete('cascade');
$table->foreign('counselor_id')->references('id')->on('counselors')->onDelete('cascade');
});
}
/**
* Reverse the migrations.
*
* @return void
*/
public function down()
{
Schema::dropIfExists('badge_counselor');
}
}
私はphp artisan migrate
/php artisan migrate:refresh
/php artisan migrate:rollback
を実行すると、すべてが正常に動作します。しかし、私が単体テストを実行すると、それらのすべてが失敗します。私はからmigrate
コマンドを実行すると、テーブルが正しくドロップされていないことを前提としていますが、
PDOException: SQLSTATE[HY000]: General error: 1 table "badge_counselor" already exists
エラーメッセージから判断する:
Illuminate\Database\QueryException: SQLSTATE[HY000]: General error: 1 table "badge_counselor" already exists (SQL: create table "badge_counselor" ("id" integer not null primary key autoincrement, "badge_id" integer not null, "counselor_id" integer not null, foreign key("badge_id") references "badges"("id") on delete cascade, foreign key("counselor_id") references "counselors"("id") on delete cascade))
または単に:そして、それぞれがエラーメッセージを返します彼らは完璧です。私はmigrations
テーブル、すべてのテーブル、さらにはデータベース全体を削除しようとしましたが、再度作成しても何も動作していないようです。
ありがとうございました。
ちょうど私がMySQLではなくsqliteを使用していることを思い出しました。 –