如何在现有表中添加额外的列而不丢失数据

Posted

技术标签:

【中文标题】如何在现有表中添加额外的列而不丢失数据【英文标题】:How can i add an extra column to an existing table which has data without losing it 【发布时间】:2018-05-20 06:48:16 【问题描述】:

我正在使用 Laravel 5.5,我想在名为 users 的现有表中添加一个额外的列。

问题是php artisan migrate 没有添加额外的列。

1) 表不为空,有可能吗?

2) 为什么下面的代码块不起作用?

通过运行php artisan make:migration update_users_column --table=users 创建一个文件:

use Illuminate\Support\Facades\Schema;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Database\Migrations\Migration;

class UpdateUsersColumn extends Migration

    /**
     * Run the migrations.
     *
     * @return void
     */
    public function up()
    
        Schema::table('users', function (Blueprint $table) 
            $table->boolean('email_sent_to_user', true);
        );
    

    /**
     * Reverse the migrations.
     *
     * @return void
     */
    public function down()
    
//        Schema::table('users', function (Blueprint $table) 
//            //
//        );
    

运行php artisan migrate 后,migrations 表已更新,但 users 表未更新。

【问题讨论】:

***.com/questions/16791613/… @JunaidMasood 我已经搜索并看到了其他帖子。我不明白为什么上面的代码不起作用这就是我发布问题的原因。 你在迁移表中有这个迁移吗? 【参考方案1】:

代码块工作正常。问题在于将文件从本地计算机传输到服务器的过程(权限不正确,因此在我编辑后文件实际上并未上传)。

【讨论】:

以上是关于如何在现有表中添加额外的列而不丢失数据的主要内容,如果未能解决你的问题,请参考以下文章

如何定义游标,当我们在两个表之间有一个公共列而不给出别名时

如何使用 python 代码显示不相关的列而不绘图

如何混合 COUNT() 和非 COUNT() 列而不丢失查询中的信息?

重命名mysql表中的列而不必重复其类型定义

如何删除一列并创建一个新列而不是在 EF Core 中重命名?

如何覆盖 bigquery 现有表中的列值