sql >> Databasteknik >  >> RDS >> Mysql

Migrering för att skapa tabell höjer Mysql2::Fel:Tabell existerar inte

Jag fick ett liknande fel när jag försökte skapa en ny modell som har en referens till en befintlig modell som skapades innan migreringen till Rails 5.1.

Även om felmeddelandet inte var särskilt tydligt om det, visade det sig i mitt fall att problemet var datatypsfel mellan primärnyckeln för den gamla modellen och främmande nyckeln för den nya modellen (MySQL tillåter inte det). Det var så för att sedan Rails 5.1 är standarddatatypen för alla primära och främmande nycklar bigint, men för den gamla modellen var primärnyckeltypen fortfarande heltal.

Jag löste detta genom att konvertera alla primära och främmande nycklar för de nuvarande modellerna till bigint, så att jag kan använda Rails nya standardinställningar och glömma det.

En lösning kan också vara att ange heltalstyp för de nya främmande nycklarna så att de matchar primärnycklarnas typ för de gamla modellerna. Något i stil med följande:

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. MySQL 'Uppdatera tidsstämpel'-kolumn - utlösare

  2. En tabell, två kolumner MYSQL frågeutmaning

  3. Mysql välj för uppdatering - det låser inte målraderna. Hur ser jag till att det gör det?

  4. Säkert sätt att lagra krypteringsnycklar - PHP