Laravel和MongoDB:无法使用migration:fresh删除现有集合

时间:2018-11-05 11:00:11

标签: mongodb laravel laravel-5.7 laravel-migrations jenssegers-mongodb

我无法通过运行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')函数,但是该集合仍然没有删除。

0 个答案:

没有答案