[RUBY] [Rails] Lösung, wenn ein Migrationsfehler in Acts-as-Taggable-On auftritt

Entwicklungsumgebung

・ Ruby: 2.5.7 Schienen: 5.2.4 ・ Vagrant: 2.2.7 -VirtualBox: 6.1 ・ Betriebssystem: macOS Catalina

Veranstaltung

Bei der Bereitstellung mit $ Rails db: migrate oder Capistrano In der unten gezeigten Migrationsdatei "Acts-as-Taggable-On" tritt ein Fehler auf.

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'

Ursache

Es scheint, dass die Ursache darin besteht, dass der Edelsteinschöpfer einfach überspringt. Kurz gesagt, dieser Fehler wird für den Rest Ihres Lebens weiterhin auftreten, es sei denn, der Edelsteinersteller ändert den Edelstein selbst, um diesen Fehler zu verhindern.

Lösungen

agiert als taggable-on der Migrationsdatei, die zum Zeitpunkt der Einführung erstellt wurde Kommentieren Sie unnötigen Code aus.

** * Achten Sie auf den Dateinamen! ** ** **

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] Lösung, wenn ein Migrationsfehler in Acts-as-Taggable-On auftritt
Fehler bei der Bundle-Installation beim Ausführen neuer Schienen
Schienen <% = Ausdruck%> Warum im leeren Zustand kein Fehler auftritt
500 Interner Serverfehler tritt in der Rails-Produktionsumgebung auf
Migration in Schienen verstehen
[Kein Methodenfehler] Lösung, wenn sie in der neuen Aktion auftritt
Migrationsfehler nach dem Zuordnen von Activerecord in der Rails5 + Docker-Umgebung (2)
Migrationsfehler nach Activerecord-Zuordnung in der Rails5 + Docker-Umgebung
Fehler bei der Verwendung von Schienen Capybara
Ein Fehler tritt auf, wenn codedeploy-agent in Ubuntu Server 20.04 installiert ist
Der Exit-Code 1 tritt auf, wenn Rails in der Docker-Umgebung gestoppt wird
[Rails] Unerwarteter Validierungsfehler im Gerät
[Lösung] Webpacker :: Manifest :: MissingEntryError in Rails
Sammeln von Clientinformationen, wenn in einer Webanwendung ein Fehler auftritt
Lösungshinweise, wenn beim Herunterladen von Docker-GPG mit Curl ein Fehler auftritt
Ich sehe keinen Fehler bei der Installation des Rails-Bundles ... der Lösung
Schienenmigration
Fehler bei der Implementierung bei der Implementierung der Spring-Validierung
Eine Erinnerung, wenn ein aapt.exe-Fehler auftritt
[Lösung] Webpacker-Fehler "ActionView :: Template :: Error Webpacker kann hello_vue ~ nicht finden", wenn Vuetify in Rails6 eingeführt wird
Lösung, die beim Versuch, mit Java eine Verbindung zu DB (MySQL) herzustellen, einen Fehler verursacht
Umgang mit NameError: nicht initialisierte Konstante :: Analysierbarer Fehler bei der Installation von Active Storage in Rails6
Bei Verwendung einer Liste in Java wird java.awt.List ausgegeben und ein Fehler tritt auf
[Rails] Fehlerbehebung beim Generieren von Token mit PAYJP
Was tun, wenn in PlayFramework eine IllegalStateException auftritt?
[Rails] ActiveRecord :: HasManyThrough-Bestellfehler in Benutzer # show
Einfache Benachrichtigungsfunktion in Rails (nur wenn befolgt)
[In der Teamentwicklung] Fehler beim Wechsel in den Zweig eines anderen Mitglieds und beim Ausführen von Rails s [Rails]
Group_by in Rails
Passen Sie die Anzeige an, wenn im Spring Boot ein Fehler wie 404 Not Found auftritt
Fehler beim Bereitstellen von Docker auf Schienen mit Notizen
Fehler ExecJS :: RuntimeUnavailable: Was tun, wenn es auftritt?
Rails 6-Startfehler "Webpacker-Konfigurationsdatei nicht gefunden" Lösung
Syntaxfehler beim Einfügen von HTML-Tags in Draper + create.js.erb
Informationen zu dem Fehler, der beim Hinzufügen eines Spaltennamens in Rails aufgetreten ist (Rails DB: Migrieren, Rails DB: Rollback, Hinzufügen).
[Rails 6] Was tun, wenn nach der Einführung von haml ein fehlender Vorlagenfehler auftritt? [Super easy]