我有一个新表要添加到一个大型 Ruby 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/