【发布时间】:2019-11-19 09:43:40
【问题描述】:
我最近在我的开发机器上升级了 Ubuntu,其中包括更新版本的 MySQL,版本 8。
因此,在运行迁移时,由于段错误,我不得不撞到 mysql2 gem。由于 ActiveRecord,它之前被固定到 < 0.5,当时,not being compatible 带有更新版本的 mysql2 gem。
问题是,当我运行迁移时,schema.rb 包含create_table 和COLLATE 的utf8mb4_0900_ai_ci。这在 MySQL 8 本地很好,但在我们的 CI 或生产服务器上不受支持,因为它们运行的是旧版本的 MySQL:
Mysql2::Error: Unknown collation: 'utf8mb4_0900_ai_ci'
在升级到 MySQL 8 之前,COLLATE 不存在,只有CHARSET:
- create_table "tasks", id: :integer, options: "ENGINE=InnoDB DEFAULT CHARSET=utf8mb4", force: :cascade do |t|
+ create_table "tasks", id: :integer, options: "ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci", force: :cascade do |t|
在我的 database.yml 中,我将编码指定为 utf8mb4,是否也可以指定 COLLATE?
【问题讨论】:
标签: ruby-on-rails ruby-on-rails-5 rails-activerecord mysql2