gpt4 book ai didi

mysql - 如何在 Ruby on Rails 和 MySQL 中使用特定于列的字符编码?

转载 作者:可可西里 更新时间:2023-11-01 08:39:29 26 4
gpt4 key购买 nike

我有一个新表要添加到一个大型 Rub​​y on Rails 项目中。我们的数据库目前使用 UTF8 字符编码。但是,我需要在这个新表格的一列中支持表情符号。

为此,该列需要采用 UTF8mb4 编码,因为 MySQL 中的基本 UTF8 编码不支持表情符号。

我可以通过执行此 SQL 来更改 mysql 端的内容:

execute "ALTER TABLE table_name CHANGE column_name VARCHAR(191) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin"

问题是这并不能解决问题,实际上我必须将 database.yml 文件中的“编码”选项从 utf8 更改为 utf8mb4。

这个问题是当我的测试运行加载数据库模式时,突然它不能因为 utf8mb4 中的字符使用比 utf8 中更多的字节,而且我们现有的索引太长而无法适应新的 utf8mb4字节要求。

我真的不想编辑所有现有的索引,因为我们的数据库非常大。

在 Rails 中没有办法在表或列级别使用字符编码吗?我是否必须更新 database.yml 文件并因此强制我的整个数据库使用 utf8mb4?

最佳答案

  • VARCHAR(255) 更改为 VARCHAR(191),对于正在索引的任何列,以绕过索引限制,或者
  • 更新到 MySQL 5.7,没有问题。

如果您需要讨论更多,请提供SHOW CREATE TABLE 和具体的连接参数,也许可以在application_controller.rb 中找到。

关于mysql - 如何在 Ruby on Rails 和 MySQL 中使用特定于列的字符编码?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40695150/

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