如何使用 Laravel 迁移将字符串列类型转换为整数?
Posted
技术标签:
【中文标题】如何使用 Laravel 迁移将字符串列类型转换为整数?【英文标题】:How to convert string column type to integer using Laravel migration? 【发布时间】: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
)
【问题讨论】:
这能回答你的问题吗? Laravel migrations change a column type from varchar to longText 不适用于以下 $table->integer('app_id')->change();当我将字符串转换为整数 CHARACTER SET utf8 时自动添加。这个怎么去掉? 你的 laravel 项目中有doctrine/dbal
包吗?
是的,我有学说/dbal。
我没有改变任何东西。这是一个全新的安装
【参考方案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/…以上是关于如何使用 Laravel 迁移将字符串列类型转换为整数?的主要内容,如果未能解决你的问题,请参考以下文章