【问题标题】:How to convert string column type to integer using Laravel migration?如何使用 Laravel 迁移将字符串列类型转换为整数?
【发布时间】:2020-03-17 11:47:55
【问题描述】:

我正在尝试使用 Laravel 迁移来更改列数据类型。但我面临以下错误。请帮帮我。

Schema::table('files', function(Blueprint $table) {
    $table->integer('app_id')->change();
    $table->index(['app_id', 'filename']);
});

SQLSTATE[42000]:语法错误或访问冲突:1064 您的 SQL 语法有错误;检查与您的 MySQL 服务器版本相对应的手册,以在第 1 行的“CHARACTER SET utf8 DEFAULT 0 NOT NULL COLLATE utf8_unicode_ci”附近使用正确的语法(SQL:ALTER TABLE files CHANGE app_id app_id INT CHARACTER SET utf8 DEFAULT 0 NOT NULL整理utf8_unicode_ci)

【问题讨论】:

  • 不适用于以下 $table->integer('app_id')->change();当我将字符串转换为整数 CHARACTER SET utf8 时自动添加。这个怎么去掉?
  • 你的 laravel 项目中有 doctrine/dbal 包吗?
  • 是的,我有学说/dbal。
  • 我没有改变任何东西。这是一个全新的安装

标签: php mysql laravel


【解决方案1】:

作为https://github.com/doctrine/dbal/issues/3714 的替代解决方案,您可以执行以下操作:

Schema::table('member_section', function (Blueprint $table) {
    $table->bigInteger('type')->charset(null)->collation(null)->change();
});

【讨论】:

    【解决方案2】:

    您的问题很可能是由最新版本的 doctrine/dbal 软件包中的错误引起的。该问题由v2.10.0 引入。

    您可以随时将composer.json 中的软件包降级为v2.9.3,它应该可以正常工作。

    在此处查看官方问题:https://github.com/doctrine/dbal/issues/3714

    【讨论】:

    • 哇,我在这上面浪费了好几个小时才终于找到你的帖子。 Laravel 和 Doctrine 一直在互相指责。它仍然没有解决。我暂时忽略。 github.com/laravel/framework/issues/…
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-06-30
    • 2020-06-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-02-11
    相关资源
    最近更新 更多