Laravel 使用带有新列的工匠迁移数据库数据库

Posted

技术标签:

【中文标题】Laravel 使用带有新列的工匠迁移数据库数据库【英文标题】:Laravel migrate database database using artisan with new columns 【发布时间】:2015-04-07 20:55:48 【问题描述】:

我正在使用 laravel,我正在尝试进行另一次迁移,但该表已经存在,因此它会引发以下错误:

[PDOException]
  SQLSTATE[42S01]: Base table or view already 
  exists: 1050 Table 'users' already exists

我已将此行添加到迁移文件中:

$table->softDeletes();

这是完整的文件:

<?php

use Illuminate\Database\Migrations\Migration;

class ConfideSetupUsersTable extends Migration

    /**
     * Run the migrations.
     */
    public function up()
    
        // Creates the users table
        Schema::create('users', function ($table) 
            $table->increments('id');
            $table->string('firstname');
            $table->string('lastname');
            $table->string('username')->unique();
            $table->string('email')->unique();
            $table->string('password');
            $table->string('confirmation_code');
            $table->string('remember_token')->nullable();
            $table->softDeletes();
            $table->boolean('confirmed')->default(false);
            $table->timestamps();
        );

        // Creates password reminders table
        Schema::create('password_reminders', function ($table) 
            $table->string('email');
            $table->string('token');
            $table->timestamp('created_at');
        );
    

    /**
     * Reverse the migrations.
     */
    public function down()
    
        Schema::drop('password_reminders');
        Schema::drop('users');
    

任何想法我做错了什么?

【问题讨论】:

【参考方案1】:

您可以回滚迁移,然后再次运行:

php artisan migrate:rollback

然后:

php artisan migrate

注意在您的情况下,这将删除表中的所有数据,因为它会删除 userspassword 提醒,然后重新创建它。

另一种方法是创建一个新的迁移:

php artisan migrate:make users_add_soft_deletes

把它放在那里:

Schema::table('users', function ($table) 
    $table->softDeletes();
);

然后运行 ​​php artisan migrate 以应用新的迁移

【讨论】:

好的,我明白了,替代解决方案是否允许我指定表中的哪个位置? 是的,如果你使用 mysql,你可以这样做 $table-&gt;softDeletes()-&gt;after('remember_token');

以上是关于Laravel 使用带有新列的工匠迁移数据库数据库的主要内容,如果未能解决你的问题,请参考以下文章

Laravel工匠迁移不创建新表

SQLSTATE[HY000] [2002] 权限被拒绝 Laravel PDO 驱动程序(凭证通过工匠迁移工作)

Laravel 迁移 - 为 5000 万条数据添加新列

如何在没有工匠的情况下运行 laravel 迁移(使用代码)

如何在 laravel 中获取所有模型/迁移名称并添加单个新列

Laravel Php 工匠制作迁移错误