【问题标题】:Laravel migrate - column type string doesn't update sizeLaravel migrate - 列类型字符串不更新大小
【发布时间】: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 migratemigrate:rollback。我不知道是否可以在同一迁移中更改大小并重命名列。
  • 运行migrate 和运行migrate:rollback 之前的表格是什么样子的?
  • 这对我很有帮助:Schema::defaultStringLength(191); 请参阅 stackoverflow.com/a/23786522/470749laravel-news.com/laravel-5-4-key-too-long-error

标签: php mysql laravel laravel-migrations


【解决方案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');
});

【讨论】:

    猜你喜欢
    • 2012-07-22
    • 1970-01-01
    • 1970-01-01
    • 2019-08-04
    • 1970-01-01
    • 2017-01-12
    • 1970-01-01
    • 2016-05-21
    • 1970-01-01
    相关资源
    最近更新 更多