Laravel phpunit测试将无法正常迁移

时间:2016-11-29 04:11:02

标签: laravel laravel-migrations

我有2个表,badgescounselors。我的所有测试都是绿色的。我添加了第三个表,一个名为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

根据错误消息判断a假设表没有正确删除,但是当我从终端运行migrate命令时,它们是完美的。我已经尝试删除migrations表,所有表,甚至整个数据库并再次创建它,似乎没有任何工作。

感谢。

2 个答案:

答案 0 :(得分:0)

您使用的是MySQL吗?如果是这样,可能尝试删除整个数据库并再次创建它,但要确保您的数据库位于InnoDB而不是MyISAM。为此,请在phpMyAdmin的“变量”部分中将default_storage_engine更改为InnoDB

答案 1 :(得分:0)

[解决方案]不完全确定发生了什么,但我删除了我用于phpunit的sqlite文件,然后再次运行它们。