・ Rubis: 2.5.7 Rails: 5.2.4 ・ Vagrant: 2.2.7 -VirtualBox: 6.1 ・ Système d'exploitation: macOS Catalina
Lors du déploiement avec $ rails db: migrate
ou Capistrano
Une erreur se produit dans le fichier de migration de ʻacts-as-taggable-on` comme indiqué ci-dessous.
Terminal
StandardError: An error has occurred, all later migrations canceled:
Mysql2::Error: Cannot drop index 'index_taggings_on_tag_id': needed in a foreign key constraint: DROP INDEX `index_taggings_on_tag_id` ON `taggings`
20200525095250/db/migrate/20200516111153_add_missing_unique_indices.acts_as_taggable_on_engine.rb:11:in `up'
Il semble que la cause en soit que le créateur de Gemmes saute simplement. En bref, cette erreur continuera à apparaître pour le reste de votre vie à moins que le créateur de gemmes ne modifie la gemme elle-même pour éviter cette erreur.
ʻActs-as-taggable-on` du fichier de migration créé au moment de l'introduction, Commentez le code inutile.
** * Faites attention au nom du fichier! ** **
ruby:20200516111153_add_missing_unique_indices.acts_as_taggable_on_engine.rb
# This migration comes from acts_as_taggable_on_engine (originally 2)
if ActiveRecord.gem_version >= Gem::Version.new('5.0')
class AddMissingUniqueIndices < ActiveRecord::Migration[4.2]; end
else
class AddMissingUniqueIndices < ActiveRecord::Migration; end
end
AddMissingUniqueIndices.class_eval do
def self.up
# add_index ActsAsTaggableOn.tags_table, :name, unique: true
# remove_index ActsAsTaggableOn.taggings_table, :tag_id if index_exists?(ActsAsTaggableOn.taggings_table, :tag_id)
# remove_index ActsAsTaggableOn.taggings_table, name: 'taggings_taggable_context_idx'
# add_index ActsAsTaggableOn.taggings_table,
# [:tag_id, :taggable_id, :taggable_type, :context, :tagger_id, :tagger_type],
# unique: true, name: 'taggings_idx'
end
def self.down
# remove_index ActsAsTaggableOn.tags_table, :name
# remove_index ActsAsTaggableOn.taggings_table, name: 'taggings_idx'
# add_index ActsAsTaggableOn.taggings_table, :tag_id unless index_exists?(ActsAsTaggableOn.taggings_table, :tag_id)
# add_index ActsAsTaggableOn.taggings_table, [:taggable_id, :taggable_type, :context], name: 'taggings_taggable_context_idx'
end
end
ruby:20200516111155_add_missing_taggable_index.acts_as_taggable_on_engine.rb
# This migration comes from acts_as_taggable_on_engine (originally 4)
if ActiveRecord.gem_version >= Gem::Version.new('5.0')
class AddMissingTaggableIndex < ActiveRecord::Migration[4.2]; end
else
class AddMissingTaggableIndex < ActiveRecord::Migration; end
end
AddMissingTaggableIndex.class_eval do
def self.up
# add_index ActsAsTaggableOn.taggings_table, [:taggable_id, :taggable_type, :context], name: 'taggings_taggable_context_idx'
end
def self.down
# remove_index ActsAsTaggableOn.taggings_table, name: 'taggings_taggable_context_idx'
end
end