Тесты Laravel phpunit не будут мигрировать должным образом

У меня есть 2 таблицы, badges а также counselors, Все мои тесты были зелеными. Я добавил третью таблицу, сводную таблицу с именем badge_counselor, Вот миграция:

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все работает нормально. Однако, когда я запускаю свои модульные тесты, ВСЕ они терпят неудачу. И каждый из них возвращает сообщение об ошибке:

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))

или просто:

PDOException: SQLSTATE[HY000]: General error: 1 table "badge_counselor" already exists

Судя по сообщению об ошибке, предположим, что таблица не удаляется правильно, но когда я запускаю migrate Команды из терминала они идеальны. Я пытался сбросить migrations таблица, все таблицы и даже вся база данных и ее создание снова, и, кажется, ничего не работает.

Благодарю.

2 ответа

[Решение] Не совсем уверен, что происходит, но я удалил файл sqlite, который использовал для phpunit, а затем снова запустил их.

Вы используете MySQL? Если это так, возможно, попробуйте удалить всю базу данных и создать ее заново, но убедитесь, что ваша база данных находится в InnoDB, а не в MyISAM. Для этого измените default_storage_engine в InnoDB в разделе переменных в phpMyAdmin.

Другие вопросы по тегам