mbleigh / acts-as-taggable-on

A tagging plugin for Rails applications that allows for custom tagging along dynamic contexts.
http://mbleigh.lighthouseapp.com/projects/10116-acts-as-taggable-on
MIT License
4.97k stars 1.2k forks source link

Migration fails, index too long, utf8mb4 charset #639

Open andyryan opened 9 years ago

andyryan commented 9 years ago

Since google search only seems to bring up resents in japanese for this I am posting it here.

The ActsAsTaggableOnMigration fails with the following error

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)

I have the feeling it has something to do with my database using utf8mb4 character encoding (required for emoji support)

I have not modified the migration in any way

FlowerWrong commented 9 years ago

May this help you.

  1. del db/migrate/20150615074304_change_collation_for_tag_names.acts_as_taggable_on_engine.rb
  2. update db/migrate/20150615074300_acts_as_taggable_on_migration.acts_as_taggable_on_engine.rb
# This migration comes from acts_as_taggable_on_engine (originally 1)
class ActsAsTaggableOnMigration < ActiveRecord::Migration
  def self.up
    create_table :tags do |t|
      t.string :name, limit: 191  # note here--------------------------
    end

    create_table :taggings do |t|
      t.references :tag

      # You should make sure that the column created is
      # long enough to store the required class names.
      t.references :taggable, polymorphic: { limit: 191 }  # note here--------------------------
      t.references :tagger, polymorphic: { limit: 191 }  # note here--------------------------

      # Limit is created to prevent MySQL error on index
      # length for MyISAM table type: http://bit.ly/vgW2Ql
      t.string :context, limit: 128

      t.datetime :created_at
    end

    add_index :taggings, :tag_id
    add_index :taggings, [:taggable_id, :taggable_type, :context]
  end

  def self.down
    drop_table :taggings
    drop_table :tags
  end
end

thx http://spring-mt.hatenablog.com/entry/2014/04/26/203020

krtschmr commented 7 years ago

cam somebody give @FlowerWrong an oscar?