【发布时间】:2017-06-29 04:01:42
【问题描述】:
我的单元测试最近开始失败。我收到此错误:
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 db 进行测试。
我想知道迁移是否是异步运行的,并且在我的代码运行时它们还没有全部完成?或者如果迁移在某处默默地失败了?
我已经在这里呆了好几个小时了,不知道发生了什么。
*UPDATE 我有一个在上述迁移之后运行的迁移,并且我确认后续迁移是成功的。所以只是这一次迁移在某种程度上默默地失败了。
【问题讨论】:
-
您是否看到在迁移运行列表中添加列的迁移?
-
是的,我列出了所有这些,包括我期望的。
-
您看到数据库中的那一列了吗?如果迁移运行时出现错误,即使未完成,它也可能保存在迁移表中。
-
我认为它不在数据库中。我不知道如何检查内存中的sqlite db。
-
如果这是最后一次迁移,您可以尝试使用“php artisan migrate:rollback”回滚,然后运行“php artisan migrate”再次执行
标签: php laravel sqlite database-migration