Laravel单元测试迁移失败

时间:2014-12-07 20:17:06

标签: laravel migration phpunit laravel-testing

我正在尝试运行PHPUnit测试。我在SQLite中为测试环境设置了:memory。在我的设置中,我调用Artisan::call('migrate'),但后来我收到以下错误:

  

常规错误:1无法添加默认值为NULL的NOT NULL列   (SQL:alter table“admins”添加列“title”文本不为null)

基本上,修改现有表的任何迁移文件都会返回错误。为什么呢?

以下是文件迁移抱怨:

<?php

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

class AddTitleToAdminsTable extends Migration {

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


    /**
     * Reverse the migrations.
     *
     * @return void
     */
    public function down()
    {
        Schema::table('admins', function(Blueprint $table)
        {
            $table->dropColumn('title');
        });
    }

}

1 个答案:

答案 0 :(得分:4)

我做了一些研究,发现了Stack Overflow上的this post

SQLite似乎有NOT NULL但没有默认值的列存在问题。在相同的情况下,MySQL只使用空字符串(对于varchar)或&#34; 0&#34; (对于数字)。所以它有一些内置的默认值。

要解决您的问题,您可以将列可以为空(仅当您希望它可以为空)或定义默认

$table->text('title')->nullable();

$table->text('title')->default('');