我想为我的应用程序编写测试,但是运行迁移时出现错误;
我的迁移文件
Schema::table('bill_payments', function (Blueprint $table) {
$table->dropColumn('attachment');
// $table->getColumns(); return empty array
// $table->dropColumn(['attachment']); I tried this
});
dd(Schema::hasColumn('bill_payments', 'attachment')); // Return false
// and this is not working because return false.
if(Schema::hasColumn('bill_payments', 'attachment'))
{
Schema::table('bill_payments', function (Blueprint $table) {
$table->dropColumn('attachment');
});
}
我也添加了教义/ dbal 2.5.13
我使用mysql运行测试,但是速度很慢。
[已解决]
哇!我为表使用前缀。我删除了它,现在可以了。
答案 0 :(得分:1)
关于迁移,您需要了解的一件事是按照您的示例运行直到崩溃或成功为止。
Schema::table('bill_payments', function (Blueprint $table) {
$table->dropColumn('attachment');
});
//It will drop the column and stop here. When you run the migration again, it will output your error because the column no longer exists.
dd(Schema::hasColumn('bill_payments', 'attachment')); // Return false
迁移代码中应该包含的是Down()方法中的反向操作。意味着您运行迁移,它将应用Up(),并且在您回滚时,它将正确还原。该错误实际上是什么意思,这意味着当它到达与表bill_payments
和列attachment
相关的操作时,它会识别出attachment
不存在。
编辑:
文档中有与SQlite相关的内容: