gpt4 book ai didi

mysql - 如何通过 Rails 迁移减少存在值的 MySQL 列的 varchar?

转载 作者:数据小太阳 更新时间:2023-10-29 08:43:26 25 4
gpt4 key购买 nike

我想将表列长度 255 迁移到 191,以将字符集从 utf8 更改为 utf8mb4。

Rails 迁移如下。

  def self.up
change_column :friend_user_lists, :comment, :string, :limit => 191
end

我已经将数据库、表和列的字符集更改为 utf8mb4,但出现以下错误。

Mysql::Error: Data truncated for column 'comment' at row 118: ALTER TABLE `friend_user_lists` CHANGE `comment` `comment` varchar(191) DEFAULT NULL

我猜错误表明存在太多长值。
那怎么迁移呢?

最佳答案

如果您可以截断现有的评论记录,那么我会在迁移中这样做:

def self.up
FriendUserList.where('LENGTH(comment) > 191').each { |r| r.update(comment: r.comment[0...191]) }
change_column :friend_user_lists, :comment, :string, :limit => 191
end

关于mysql - 如何通过 Rails 迁移减少存在值的 MySQL 列的 varchar?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41570682/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com