当前位置: 首页 > 知识库问答 >
问题:

Laravel migrate—一次完成多个迁移(文件)

冀俊良
2023-03-14

比如说,我有多个迁移文件更新单个表。

例如

2016_03_20_072730_create_tasks_table.php
2016_03_20_075467_create_tasks_table.php

... 来自不同团队成员的回购协议。每个都在调整表中的某些内容,例如添加一列。

当我试图:

php artisan migrate

我得到一个错误:

PHP Fatal error:  Cannot declare class CreateTasksTable, because the name is
eady in use in U:\www\b10\database\migrations\2016_03_20_072737_create_tasks_
le.php on line 30


  [Symfony\Component\Debug\Exception\FatalErrorException]
  Cannot declare class CreateTasksTable, because the name is already in use

一个人应该如何处理上述情况?

编辑

下面是代码:

2016_03_20_072730_create_tasks_table.php:

class CreateTasksTable extends Migration
{
    /**
     * Run the migrations.
     *
     * @return void
     */
    public function up()
    {
       Schema::table('tasks', function ($table)
       {
           $table->string('task1');
       });
    }

    /**
     * Reverse the migrations.
     *
     * @return void
     */
    public function down()
    {
        Schema::drop('tasks');
    }
}

2016_03_20_075467_create_tasks_table.php:

class CreateTasksTable extends Migration
{
    /**
     * Run the migrations.
     *
     * @return void
     */
    public function up()
    {
    Schema::table('tasks', function ($table)
        {
            $table->string('task2');
        });
    }

    /**
     * Reverse the migrations.
     *
     * @return void
     */
    public function down()
    {
        Schema::drop('tasks');
    }
}

共有1个答案

宋伟泽
2023-03-14

每个迁移都必须具有唯一的类名。将第二个重命名为更明智的东西,如2016_03_20_075467_add_task2_to_tasks_tableaddTask2ToTasksTable,然后运行作曲家pash-autoload以使Laravel找到更改。现在您可以迁移了。

编辑:既然两个迁移的代码都被编辑到问题中,我可以看到第一次迁移有同样的问题,应该以同样的方式重命名。可能在更早的某个时候有一个初始创建迁移。您应该停止使用创建命名编辑迁移,因为您实际上并不是在创建表。

 类似资料:
  • 我对Flyway完全陌生,但我正在尝试使用https://github.com/flyway/flyway-docker描述的docker-compose flyway mysql安排来迁移许多相同的测试数据库 据我所知,< code>migrate命令可以在它的< code>-schemas参数中接受多个模式,但是它似乎只将实际的SQL迁移应用于列表中的第一个模式。 例如,当我使用< code>

  • 问题内容: 我进行了迁移,添加了一个新表,并希望还原该表并删除该迁移,而不创建新迁移。 我该怎么做?是否有命令还原上一次迁移,然后我可以简单地删除迁移文件? 问题答案: 你可以通过迁移到上一个迁移来还原。 例如,如果你的最后两个迁移是: 然后,你将执行以下操作: 然后,你可以删除迁移。 如果你使用的是Django 1.8+,则可以使用以下命令显示所有迁移的名称 要撤消应用程序的所有迁移,可以运行:

  • 我有一个kafkalistener,可以一次监听一批消息,如下所示 我的问题是,有没有一种方法可以监听多批消息并只提交一次。例如,如果我在Kafka主题中有1000条消息,我希望以10批的形式一次听100条消息,并在处理10批消息后提交偏移量。

  • 我有这个迁移代码 当我运行生成迁移的代码时 我得到了这个结果: [照明\Database\QueryException]SQLSTATE[42000]:语法错误或访问冲突:1103不正确的表名"(SQL:更改表添加con straint外键()引用"()删除级联) [条令\DBAL\Driver\PDOException]SQLSTATE[42000]:语法错误或访问冲突:1103不正确的表名“”

  • (至少我可以只用名字,跳过时间戳……) 有更简单的方法吗?

  • 我想在一个POST请求中上传多个图像。目前,我的请求中与文件上传相关的部分正在获取一个文件,如下所示: 这很好用。现在,我尝试更改解码为,并对所有文件执行循环 尝试使用Postman中的参数上传图像时,出现以下错误: 不支持嵌套表单数据解码。 如何解决此问题?