【发布时间】:2019-01-09 19:41:39
【问题描述】:
我需要将 Blob 字段类型更改为 Varchar(128)。字段中的数据将适合目标字段大小,它是文本,并且不应该有 UTF-8 的问题。
示例数据,所有数据均采用以下格式: {"weight":"0","height":"0","width":"0","length":"0"}
我正在使用 Laravel Make:migrate 来处理转换。
我应该如何编写 SQL?
我知道如何编写 Laravel 迁移。我也知道如何改变一个领域。但是 Blob 不是文本字段,Blob 通常也不会转换为 Varchar。我过去曾对 Blob 进行过一些手动 UTF-8 转换,并且知道如果操作不当,可能会弄乱数据。所以我在这里关心的是不要用 Laravel Migrate 弄乱我的数据。我不相信 migrate 'down' 方法可以撤消损坏的数据。
如果我的数据适合 varchar 目标大小并且如果数据适合 UTF-8 字符集,我是否可以直接使用 Alter 语句:
DB::query("ALTER TABLE DB1.products CHANGE COLUMN dimensions dimensions varchar(128) DEFAULT NULL;");
【问题讨论】:
-
我关心的不是如何通过 Laravel 迁移进行更改。我知道该怎样。我也知道如何改变一个领域。只是 Blob 通常不会更改为 Varchars。在将 Blob 转换为 Varchar 时,我在 Google 中没有找到任何回报。我不想通过迁移来破坏我的数据,因为我错过了一些我应该考虑的事情。
-
@Scotty 更新了我的答案