我无法通过运行migration:fresh删除MongoDB集合。该项目基于Laravel 5.7,我们正在使用jenssegers/laravel-mongodb
。当我尝试运行migration:fresh时,出现错误提示
MongoDB \ Driver \ Exception \ CommandException:一个集合'project.drivers'已经存在
如果我手动删除集合并运行migration:fresh,则会再次创建集合。就像可以使用Schema::connection('mongodb')->create('drivers', ...
我不确定为什么运行Schema::connection('mongodb')->drop('drivers');
时为什么不删除该集合
以下是我引发错误的迁移文件之一。
use Illuminate\Database\Migrations\Migration;
use Illuminate\Support\Facades\Schema;
use Jenssegers\Mongodb\Schema\Blueprint;
class CreateDriversTable extends Migration
{
/**
* Run the migrations.
*
* @return void
*/
public function up()
{
Schema::connection('mongodb')->create('drivers', function (Blueprint $collection) {
$collection->string('first_name');
$collection->string('last_name');
$collection->string('id_number');
$collection->timestamps();
});
}
/**
* Reverse the migrations.
*
* @return void
*/
public function down()
{
Schema::connection('mongodb')->drop('drivers');
}
}
mySQL是主要的数据库连接。我的.env文件看起来像这样
DB_CONNECTION=mysql
DB_HOST=127.0.0.1
DB_PORT=3306
DB_DATABASE=project
DB_CONNECTION_MONGO=mongodb
DB_HOST_MONGO=127.0.0.1
DB_PORT_MONGO=27017
DB_DATABASE_MONGO=project
如果需要提供其他信息或代码示例,请告诉我。我尝试使用文档中说明的内容,但是会引发相同的错误。我不熟悉将MongoDB与Laravel结合使用,并且在互联网上搜索并没有找到有效的解决方案。
更新
我刚刚将Schema::connection('mongodb')->drop('drivers');
函数移到了up()中Schema::connection('mongodb')->create('drivers', ...
数据库的正上方,并且集合删除了。因此,似乎down()函数被忽略了。
更新2018年11月11日
我尝试使用dropIfExists('drivers')
函数,但是该集合仍然没有删除。