Laravel migrate - 列类型字符串不更新大小
Posted
技术标签:
【中文标题】Laravel migrate - 列类型字符串不更新大小【英文标题】:Laravel migrate - column type string doesn't update size 【发布时间】:2019-01-02 12:58:16 【问题描述】:我创建了一个迁移来更新 mysql 中 VARCHAR 列的大小并在同一迁移中重命名它。因此,要通过 Laravel Schema 更改 VARCHAR() 类型,我们使用 string() 基于Laravel docs
这是 up() 函数:
Schema::table('address', function (Blueprint $table)
$table->string('place_id', 100)->change();
$table->renameColumn('place_id', 'full_address');
);
还有函数down():
Schema::table('address', function (Blueprint $table)
$table->string('full_address', 255)->change();
$table->renameColumn('full_address', 'place_id');
);
它正在重命名列但它没有改变大小,任何想法为什么?
MySQL 表
Field, table, Type, Character Set, Display Size
place_id,address,VARCHAR,utf8,255
提前谢谢你。
【问题讨论】:
“它不工作”到底是什么意思 您正在运行的php artisan ...
命令是什么?
我更新了问题。我正在运行php artisan migrate
和migrate:rollback
。我不知道是否可以在同一迁移中更改大小并重命名列。
运行migrate
和运行migrate:rollback
之前的表格是什么样子的?
这对我很有帮助:Schema::defaultStringLength(191);
请参阅 ***.com/a/23786522/470749 和 laravel-news.com/laravel-5-4-key-too-long-error
【参考方案1】:
我找到了一个解决方案,我不确定它是否是最好的,但最好使用multiple Schemas。
Schema::table('address', function (Blueprint $table)
$table->string('place_id', 100)->change();
);
Schema::table('address', function (Blueprint $table)
$table->renameColumn('place_id', 'full_address');
);
【讨论】:
以上是关于Laravel migrate - 列类型字符串不更新大小的主要内容,如果未能解决你的问题,请参考以下文章
php Laravel Migration将Null设置为exisiting列
有没有办法使用 Laravel 5 Migrations 创建一个 citext 字段?