gpt4 book ai didi

mysql - COLLATE=utf8_unicode_ci 迁移后从 schema.rb 中删除

转载 作者:行者123 更新时间:2023-12-02 15:33:39 24 4
gpt4 key购买 nike

运行rails 5.0.2

源代码管理中的 schema.rb 中的表似乎大多具有以下格式:

create_table "app_files", 
force: :cascade,
options: "ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci"
do |t|

请注意末尾的 COLLATE=utf8_unicode_ci"

当我运行迁移时,生成的 schemaa.rb 基本相同,但从这些行中删除了 COLLATE=utf8_unicode_ci",因此现在看起来像:

create_table "app_files", 
force: :cascade,
options: "ENGINE=InnoDB DEFAULT CHARSET=utf8"
do |t|

根据其他帖子,我尝试了两种方法来解决此问题

1) 在我的 /etc/mysql/my.cnf 中,我添加了:

[mysqld]
character-set-server = utf8
collation-server = utf8_unicode_ci

2) 在我的database.yml中,我向所有相关环境添加了排序规则:utf8_general_ci

然后我重新启动了 mysql,删除、创建并迁移了我的数据库,但整理行仍然消失了。

对于我需要更改哪些配置才能自动生成该位有什么想法吗?

最佳答案

我遇到了这个问题,并通过将 encodingcollat​​ion 设置添加到我的 database.yml 配置文件中解决了该问题。

我想知道你的是否被忽略,因为它们是 MySQL 默认值。您应该尝试使用 utf8mb4utf8mb4_unicode_ci,其额外好处是它们支持 4 字节字符,例如某些表情符号字符。

这是我的 database.yml 文件的 default 部分供引用:

default: &default
adapter: mysql2
encoding: utf8mb4
collation: utf8mb4_unicode_ci
pool: <%= ENV.fetch("RAILS_MAX_THREADS") { 5 } %>
username: root
password:

关于mysql - COLLATE=utf8_unicode_ci 迁移后从 schema.rb 中删除,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50952467/

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