如何在laravel迁移中将数据类型float更改为string

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何在laravel迁移中将数据类型float更改为string相关的知识,希望对你有一定的参考价值。

我试图将我的一个字段的数据类型从float更改为字符串,但我面临一个问题

SQLSTATE [42000]:语法错误或访问冲突:1064 SQL语法中有错误;检查与MariaDB服务器版本对应的手册,以便在第1行的''附近使用正确的语法(SQL:ALTER TABLE patient MODIFY height varchar)

我的迁移:

public function up()
{
    DB::statement('ALTER TABLE patient MODIFY height varchar');
}

我如何实现目标:这里需要你的帮助

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

        $table->string('height')->change();
    });


}
答案

您可以使用laravel的更改方法:

public function up()
{
    Schema::table('patient', function ($table) {

        $table->string('height')->change();
    });
}

您的SQL语法也应该是:

ALTER TABLE patient MODIFY height varchar(255);

更新:

根据laravel的文档:

只能更改以下列类型:bigInteger,binary,boolean,date,dateTime,dateTimeTz,decimal,integer,json,longText,mediumText,smallInteger,string,text,time,unsignedBigInteger,unsignedInteger和unsignedSmallInteger。

所以Laravel的change将不会直接工作,因为你有一个float列laravel内部作为double(8,2)。请使用我给出的内容更新原始SQL语法,然后重试。

以上是关于如何在laravel迁移中将数据类型float更改为string的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 laravel 迁移和种子正确处理数据库数据更改

在 Laravel 迁移中更改列类型的最佳方法是啥?

如何使用 Laravel 迁移将字符串列类型转换为整数?

如何在 laravel 5.5 迁移中将 DB::unprepared() 用于 mysql 函数和存储过程

在 Laravel 迁移中更改日期格式

如何在 laravel 迁移中将字符串转换为布尔值?