gpt4 book ai didi

ruby-on-rails - Acts_as_taggable_on 索引太长

转载 作者:搜寻专家 更新时间:2023-10-30 23:45:30 25 4
gpt4 key购买 nike

我正在尝试使用 acts_as_taggable_gem,但我遇到了迁移问题。

在自动生成的 ActsAsTaggableOnMigration 文件中,我收到以下错误

Mysql2::Error: Specified key was too long; max key length is 767 bytes: CREATE INDEX 'index_taggings_on_taggable_id_and_taggable_type_and_context' ON 'taggings' ('taggable_id', 'taggable_type', 'context')

在线 add_index :taggings, [:taggable_id, :taggable_type, :context]

我过去曾在另一个项目中成功使用过该 gem。唯一不同的是这次数据库字符集是 utf8mb4,这是支持 emojis 的要求。

我尝试减少 :context 上的 :limit(默认为 128)无济于事

最佳答案

您可以通过两种方式解决此问题:

将存储引擎 (MySQL) 从 InnoDB 更改为 MyISAM,MyISAM supports 1000 bytes long prefix for indexing, whereas InnoDB support 767 bytes.

或者通过指定context长度:

add_index :taggings, [:taggable_id, :taggable_type, :context], name: 'by_id_type_context', length: {context: 128}

# => CREATE INDEX by_id_type_context ON taggings(taggable_id, taggable_type, context(128))

注意:SQLite 不支持索引长度。

关于ruby-on-rails - Acts_as_taggable_on 索引太长,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29251824/

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