我正在将 Rails 应用程序从 5.2.3 升级到 7.0.3。适用于旧版 Rails 的迁移在新版 Rails 上会失败。
这是迁移:
change_column :documents, :override, :json, using: 'override::JSON'
这会导致错误:
Mysql2::Error: COLLATION 'utf8_general_ci' is not valid for CHARACTER SET 'binary'
我想知道“二进制文件”来自哪里。
我已经尝试过:
ALTER DATABASE dbname CHARACTER SET utf8 COLLATE utf8_unicode_ci;
但这没有帮助。
执行“显示像 '%char%' 这样的变量;显示像 '%coll%' 这样的变量;”结果:
| character_set_client | utf8 |
| character_set_connection | utf8 |
| character_set_database | utf8 |
| character_set_filesystem | binary |
| character_set_results | utf8 |
| character_set_server | latin1 |
| character_set_system | utf8 |
| character_sets_dir | /rdsdbbin/mysql-5.7.38.R1/share/charsets/ |
| collation_connection | utf8_general_ci |
| collation_database | utf8_unicode_ci |
| collation_server | latin1_swedish_ci |
数据库位于 AWS RDS(MySQL 社区)中。
如果有任何帮助,我将不胜感激!
最佳答案
当我尝试将列数据类型从文本更改为 JSON 时,我在 Rails 7 中遇到了相同的错误
我定义迁移中的排序规则为零
例如:
change_column :documents, :override, :json, collation: nil
关于mysql - Rails change_column 错误:Mysql2::Error: COLLATION 'utf8_general_ci' 对于字符集 'binary' 无效,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/74133160/