[RUBY] [Rails] Solution lorsqu'une erreur de migration se produit dans agit-as-taggable-on

Environnement de développement

・ Rubis: 2.5.7 Rails: 5.2.4 ・ Vagrant: 2.2.7 -VirtualBox: 6.1 ・ Système d'exploitation: macOS Catalina

un événement

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'

Cause

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.

Solution

ʻ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

Recommended Posts

[Rails] Solution lorsqu'une erreur de migration se produit dans agit-as-taggable-on
Erreur lors de l'installation de l'ensemble lors de l'exécution de rails neufs
Rails <% = expression%> Pourquoi aucune erreur ne se produit lorsqu'il est vide
Une erreur de serveur interne 500 se produit dans l'environnement de production Rails
Comprendre la migration dans les rails
[Aucune erreur de méthode] Solution lorsqu'elle se produit dans la nouvelle action
Erreur de migration après avoir associé Activerecord dans l'environnement Rails5 + Docker (2)
Erreur de migration après l'association Activerecord dans l'environnement Rails5 + Docker
Erreur lors de l'utilisation des rails capybara
Une erreur se produit lorsque codedeploy-agent est installé dans Ubuntu Server 20.04
Le code de sortie 1 se produit lorsque Rails est arrêté dans l'environnement Docker
[Rails] Erreur de validation inattendue dans l'appareil
[Solution] Webpacker :: Manifest :: MissingEntryError dans les rails
Collecte des informations client lorsqu'une erreur se produit dans une application Web
Notes de solution lorsqu'une erreur se produit lors du téléchargement de docker gpg à l'aide de curl
Je ne vois pas d'erreur dans l'installation du bundle Rails ... la solution
Migration des rails
Erreur de mise en œuvre lors de la mise en œuvre de la validation Spring
Un rappel lorsqu'une erreur aapt.exe se produit
[Solution] Erreur Webpacker "ActionView :: Template :: Erreur Webpacker ne peut pas trouver hello_vue ~" lors de l'introduction de Vuetify à Rails6
Solution qui donne une erreur lors de la tentative de connexion à DB (MySQL) avec Java
Traitement de NameError: constante non initialisée :: Erreur analysable lors de l'installation d'Active Storage dans Rails6
Lors de l'utilisation d'une liste en Java, java.awt.List sort et une erreur se produit
[Rails] Résolution d'erreur lors de la génération de jetons avec PAYJP
Que faire si IllegalStateException se produit dans PlayFramework
[Rails] ActiveRecord :: HasManyThrough Order Error in Users # show
Fonction de notification simple dans Rails (uniquement lorsqu'elle est suivie)
[Dans le développement de l'équipe] Erreur lors du déplacement vers la succursale d'un autre membre et de l'exécution des rails [Rails]
Group_by dans Rails
Personnalisez l'affichage lorsqu'une erreur telle que 404 Not Found se produit dans Spring Boot
Erreur rencontrée avec les notes lors du déploiement de docker sur des rails
Erreur ExecJS :: RuntimeUnavailable: que faire quand cela se produit
Erreur de démarrage de Rails 6 "Fichier de configuration Webpacker introuvable" Solution
Erreur de syntaxe lors de l'inclusion de balises HTML dans Draper + create.js.erb
À propos de l'erreur survenue lors de l'ajout d'un nom de colonne dans les rails (rails db: migrate, rails db: rollback, add)
[Rails 6] Que faire lorsqu'une erreur de modèle manquante se produit après l'introduction du haml [Super facile]