如何在laravel中将blob改为varcharmake:migration

lawou6xi  于 2021-06-15  发布在  Mysql
关注(0)|答案(3)|浏览(307)

我需要将blob字段类型更改为varchar(128)。字段中的数据将适合目标字段大小,它是文本,并且不应该有utf-8的问题。
示例数据,所有数据的格式如下:{“weight”:“0”,“height”:“0”,“width”:“0”,“length”:“0”}
我用的是拉威尔make:migrate to 处理转换。
如何编写sql?
我知道如何写一个拉维迁移。我也知道如何改变一个领域。但是blob不是文本字段,也不是通常转换为varchar的blob。我在过去做过一些手动的utf-8 blob转换,我知道如果你做得不对的话,你会把你的数据弄乱的。所以我在这里关心的是不要用laravel迁移来破坏我的数据。我不相信migrate'down'方法可以撤消损坏的数据。
如果我的数据符合varchar目标大小,并且数据符合utf-8字符集,那么我是否可以直接使用alter语句:
db::查询(“alter table DB1 . products 更改列
dimensions dimensions varchar(128)默认为null;“”;

inkz8wg9

inkz8wg91#

您不应该为此使用sql,只需创建一个迁移并使用change方法

Schema::table('table_name', function ($table) {
    $table->string('column_name')->change();
});

https://laravel.com/docs/5.7/migrations#modifying-列
考虑到你的评论

ALTER TABLE tablename MODIFY column_name VARCHAR(128);
v64noz0r

v64noz0r2#

sql语句:
\db::语句('alter table products 更改列
dimensions dimensions varchar(128)默认为null;');
干得不错。

kmpatx3s

kmpatx3s3#

composer install 然后 composer update 在控制台和
从数据库中删除表并删除迁移,然后使用 php artisan make:migration change_col_datatype --table=table_name 然后进行如下更改

Schema::table('your_table_name', function ($table) {
    $table->string('your_table_name');
});

public function down()
    {
        Schema::dropIfExists('tablename');
    }

相关问题