我的单元测试最近开始失败了。我收到了这个错误:
PDOException: SQLSTATE[HY000]:
General error: 1 table loan_details has no column named start_month
发生问题的那一行,我有这段代码:
$loan = LoanDetails::create(['loan_percentage' => .8,
'loan_product_id' => 1,
'interest_rate' => .5,
'start_month' => 0,
'term' => 120,
'fixed_finance_fee' => 0,
'variable_finance_Fee' => 0,
'valid_from' => '2015-01-01'
]);
如果我将"start_month"这一行注释掉,那么它就可以按照逻辑正常工作。
在我的单元测试设置中,我运行了所有的迁移(大约80个)。
我有一个迁移文件看起来像这样:
Schema::table('loan_details', function(Blueprint $table){
$table->integer('start_month')->unsigned()->after('interest_only')->default(0);
$table->decimal('balloon_percent',4,3)->after('term')->nullable();
$table->integer('balloon_month')->after('balloon_percent')->nullable();
$table->dropColumn('ordinal_rank');
});
所以,我想知道是否所有的迁移都没有运行,于是我运行了这段代码:
$rows = DB::table('migrations')->get();
print_r($rows);
这列出了所有迁移都已完成。我的测试中使用了一个内存SQLite数据库。
我想知道这些迁移是否是异步运行的,它们在我的代码运行时是否全部完成?或者这些迁移是否在某个地方悄悄失败了?
我已经做了几个小时了,不知道发生了什么。
*更新:我有一个在上述迁移之后运行的迁移,并确认后续迁移成功了。所以只有这一个迁移以某种方式悄悄失败了。