sql >> Database >  >> RDS >> Mysql

Migratie om tabel te maken verhoogt Mysql2::Error:Table bestaat niet

Ik kreeg een soortgelijke fout bij het maken van een nieuw model met een verwijzing naar een bestaand model dat is gemaakt voordat ik naar Rails 5.1 migreerde.

Hoewel de foutmelding daar niet erg duidelijk over was, bleek in mijn geval dat het probleem een ​​datatype mismatch was tussen de primaire sleutel van het oude model en de refererende sleutel van het nieuwe model (MySQL staat dat niet toe). Dat was zo omdat sinds Rails 5.1 het standaard datatype van alle primaire en externe sleutels bigint is, maar voor het oude model was het primaire sleuteltype nog steeds integer.

Ik heb dit opgelost door alle primaire en externe sleutels van de huidige modellen naar bigint te converteren, zodat ik de nieuwe standaardwaarden van Rails kan gebruiken en het kan vergeten.

Een tijdelijke oplossing kan ook zijn om het type integer voor de nieuwe externe sleutels op te geven, zodat ze overeenkomen met het type primaire sleutel van de oude modellen. Iets als het volgende:

class CreateUserImages < ActiveRecord::Migration[5.1]
  def change
    create_table :user_images do |t|
      t.references :user, type: :integer, foreign_key: true
      t.string :url
    end
  end
end


  1. Hoe de datum van vandaag terug te zetten naar een variabele in Oracle

  2. syntaxisfout, onverwachte 'mysql_connect' (T_STRING)

  3. Is er een manier om de output van PL/SQL in Oracle door te spoelen?

  4. Maak een afbeeldingstrackback voor een externe webuitgever om naar mijn site te linken