Laravel迁移在现有数据库表中添加列问题

Posted

技术标签:

【中文标题】Laravel迁移在现有数据库表中添加列问题【英文标题】:Laravel migration add colum issue in existing database table 【发布时间】:2018-02-06 23:49:18 【问题描述】:

我在 laravel 4.2 项目中工作,现在我想在现有表用户中添加列。现在我想添加另一列,当我运行迁移命令时,我总是收到相同的消息“没有要迁移的东西”。 下面是我的迁移模式代码

public function up()

    Schema::table('users', function($table) 
        $table->string('dob')->nullable()->change();
    );

我在终端中运行的命令

 php artisan migrate --path=/database/migrations/2017_08_29_130700_add_colum_user_is_black_list.php

我也运行以下命令

php artisan migrate

但是当我运行上述命令时,我收到以下错误

SQLSTATE[42S01]:基表或视图已存在:1050 表“用户”已存在

【问题讨论】:

@RAUSHANKUMAR 然后我收到此错误“SQLSTATE[42S01]: Base table or view already exists: 1050 Table 'users' already exists” 【参考方案1】:

您需要按照以下步骤使用 laravel 迁移在现有表中添加列。

Laravel 3+、4+

    使用 CLI 进行迁移(使用特定名称以避免与现有模型冲突)

    php artisan migrate:make add_dob_users_table --table=users

Laravel 5+

    使用 CLI 进行迁移(使用特定名称以避免与现有模型冲突)

    php artisan make:migration add_dob_to_users

Laravel 3+

    使用Schema::table() 方法(当您访问现有表,而不是创建新表时)并添加这样的列:

    public function up()
    
        Schema::table('users', function($table) 
            $table->string('dob')->nullable()->change();
        );
    
    

    添加回滚选项:

    public function down()
    
        Schema::table('users', function($table) 
            $table->dropColumn('dob');
        );
    
    

Laravel 4+、5+

    使用Schema::table() 方法(当您访问现有表,而不是创建新表时)并添加这样的列:

    public function up()
    
        Schema::table('users', function(Blueprint $table) 
            $table->string('dob')->nullable()->change();
        );
    
    

    添加回滚选项:

    public function down()
    
        Schema::table('users', function(Blueprint $table) 
            $table->dropColumn('dob');
        );
    
    

Laravel 3+、4+、5+

    最后运行你的迁移

    php artisan migrate

用于创建和运行迁移的文档是

Laravel 3+

Laravel 3 Schema Builder

Laravel 3 Migrations

Laravel 4、5

Laravel Schema Builder

Laravel Migrations

【讨论】:

仍然面临同样的问题 "[PDOException] SQLSTATE[42S01]: Base table or view already exists: 1050 Table 'users' already exists" 即使我按照您定义的相同步骤进行操作。 你用的是什么 laravel 版本? 尝试在函数中添加bluprintSchema::table('users', function(User $table) 在这里查看文档laravel.com/docs/5.4/migrations#creating-columns 我正在使用的 Laravel 4.2 版本

以上是关于Laravel迁移在现有数据库表中添加列问题的主要内容,如果未能解决你的问题,请参考以下文章

在迁移中向现有表添加新列

解决如何在现有表中添加列

将包含外键的列添加到 Laravel 生产中的现有表中

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

在 Laravel 的现有列中添加“ON DELETE CASCADE”

如何使用 SSMA(用于访问 SQL Server)将具有不同列的表迁移到现有表中?