如何在Laravel迁移中将数据类型float更改为字符串

时间:2019-02-19 13:53:07

标签: laravel types migration

我正在尝试将我的某个字段的数据类型从float更改为string,但是我遇到了问题

  

SQLSTATE [42000]:语法错误或访问冲突:1064           您的SQL语法错误;检查手册            对应于您的MariaDB服务器版本,以使用正确的语法           第1行的''附近(SQL:ALTER TABLE患者            修改高度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();
    });


}

1 个答案:

答案 0 :(得分:0)

您可以使用laravel的change方法:

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

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

您的SQL语法也应为:

ALTER TABLE patient MODIFY height varchar(255);

更新:

根据laravel的文档:

  

仅以下列类型可以“更改”:bigInteger,二进制,布尔值,日期,dateTime,dateTimeTz,十进制,整数,json,longText,mediumText,smallInteger,字符串,文本,时间,unsignedBigInteger,unsignedInteger和unsignedSmallInteger。

因此Laravel的change将无法直接工作,因为您有一个float列,laravel在内部将其列为double(8,2)。请使用我提供的内容更新原始SQL语法,然后重试。