如何更改 SQL 中现有 table 的列长度?

How to change column length of existing table in SQL?

我有一个 SQL table 将包含 (TEXT/VARCHAR) 列一定长度。

如何在不删除或硬编码现有数据库的情况下更改现有列的长度 table。

2020_02_13_065846_create_users_documents_table.php

public function up()
    {
        Schema::create('user_documents', function (Blueprint $table) {

            $table->increments('id');
            $table->string('upload_url', 200)->nullable();
            $table->string('user_name', 50)->nullable();
        });

现在我想通过创建一个新的 table 将列 user_name 的长度更改为 200。

  1. 开发方案

您在该文件中更正它并使用 php artisan migrate:fresh 刷新您的迁移,但是 您丢失了数据库中的所有数据

  1. 生产解决方案

使用 alter 语句进行新的迁移。

public function up()
{
    \DB::statement('ALTER TABLE user_documents ALTER COLUMN upload_url VARCHAR (200)');
}

您只需 modify 您的专栏:

change 方法允许您修改现有列的类型和属性。例如,您可能希望增加字符串列

的大小

进行新的迁移,设置此语句:

Schema::table('users', function ($table) {
    $table->string('upload_url', 500)->change();
 $table->string('user_name', 500)->change();
});