如何删除与另一个数据库中表的连接的架构?

时间:2019-05-16 13:45:06

标签: php database laravel migration

在我的Laravel应用中,我具有与不同数据库的连接,并且当我需要使用新的虚拟数据(我使用 php artisan migrate:fresh --seed 命令)我总是遇到此错误

  

SQLSTATE [42S01]:基表或视图已存在:1050表'table_name'已存在

这很奇怪,因为我的迁移类中有down()方法

class CreateExampleTable extends Migration
{
    /**
     * Run the migrations.
     *
     * @return void
     */
    public function up()
    {
        Schema::connection('conn2')->create('table_name', function (Blueprint $table) {
            $table->bigIncrements('id');
            $table->timestamps();
        });
    }

    /**
     * Reverse the migrations.
     *
     * @return void
     */
    public function down()
    {
        Schema::connection('conn2')->dropIfExists('table_name');
    }
}

1 个答案:

答案 0 :(得分:0)

如果您使用migrate:refresh而不是fresh,它将使用您的down()方法回滚数据库。

我认为问题不在您的down()中,而在您的up()中:它正在尝试创建表,但是具有该名称的表已经存在。

我建议做类似的事情:

if (!Schema::hasTable('tbl_name')) {
     // create table
}

您可能还必须指定在迁移中使用的数据库。