Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/229.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 如何删除连接到另一个数据库中表的架构?_Php_Database_Laravel_Migration - Fatal编程技术网

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

Php 如何删除连接到另一个数据库中表的架构?,php,database,laravel,migration,Php,Database,Laravel,Migration,在我的Laravel应用程序中,我有到不同数据库的连接,当我需要使用新的虚拟数据刷新每个数据库中的表时(我使用php artisan migrate:fresh--seed命令),我总是会出现此错误 SQLSTATE[42S01]:基表或视图已存在:1050表“table_name”已存在 这很奇怪,因为我的迁移类中有down()方法 class CreateExampleTable extends Migration { /** * Run the migrations.

在我的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');
    }
}

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

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

我建议采取以下措施:

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

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

这是因为
fresh
命令实际上没有运行
down()
方法,它只是删除所有表。这可能不起作用的另一个原因是,除非指定连接,
db
artisan命令仅使用默认连接。作为参考,此行为将在中详细描述和讨论。不幸的是,Laravel(Taylor)对支持这种功能没有兴趣。