我需要将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;“”;
3条答案
按热度按时间inkz8wg91#
您不应该为此使用sql,只需创建一个迁移并使用change方法
https://laravel.com/docs/5.7/migrations#modifying-列
考虑到你的评论
v64noz0r2#
sql语句:
\db::语句('alter table
products
更改列dimensions
dimensions
varchar(128)默认为null;');干得不错。
kmpatx3s3#
跑
composer install
然后composer update
在控制台和从数据库中删除表并删除迁移,然后使用
php artisan make:migration change_col_datatype --table=table_name
然后进行如下更改