【问题标题】:Rails change_column error: Mysql2::Error: COLLATION 'utf8_general_ci' is not valid for CHARACTER SET 'binary'Rails change_column 错误:Mysql2::Error:COLLATION \'utf8_general_ci\' 对 CHARACTER SET \'binary\' 无效
【发布时间】:2023-01-25 16:35:29
【问题描述】:

我正在将我们的 Rails 应用程序从 5.2.3 升级到 7.0.3。适用于旧轨道的迁移在新轨道上失败。

这是迁移:

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 社区)中。

我将不胜感激任何帮助!

【问题讨论】:

    标签: mysql ruby-on-rails


    【解决方案1】:

    当我尝试将列数据类型从文本更改为 JSON 时,我在 Rails 7 中遇到了同样的错误

    我在迁移中定义了排序规则为零

    例如:

    change_column :documents, :override, :json, collation: nil
    

    【讨论】:

      猜你喜欢
      • 2013-05-17
      • 2014-11-09
      • 2020-03-31
      • 2021-01-19
      • 2018-02-09
      • 2022-06-22
      • 2015-05-06
      • 2018-07-09
      • 2013-08-28
      相关资源
      最近更新 更多