sql >> Database teknologi >  >> RDS >> Mysql

Migrering for at oprette tabel rejser Mysql2::Fejl:Tabellen eksisterer ikke

Jeg fik en lignende fejl, da jeg forsøgte at oprette en ny model, der har en reference til en eksisterende model, der blev oprettet før migrering til Rails 5.1.

Selvom fejlmeddelelsen ikke var særlig klar omkring det, viste det sig i mit tilfælde, at problemet var datatypemismatch mellem primærnøglen til den gamle model og fremmednøglen til den nye model (MySQL tillader det ikke). Det var sådan, fordi standarddatatypen for alle primære og fremmede nøgler siden Rails 5.1 er bigint, men for den gamle model var primærnøgletypen stadig heltal.

Jeg løste dette ved at konvertere alle primære og fremmede nøgler af de nuværende modeller til bigint, så jeg kan bruge Rails nye standardindstillinger og glemme alt om det.

En løsning kunne også være at angive heltalstype for de nye fremmednøgler, så de matcher primærnøgletypen for de gamle modeller. Noget i stil med følgende:

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. ATN2() Eksempler i SQL Server

  2. Kan to midlertidige tabeller med samme navn eksistere i separate forespørgsler

  3. excel til oracle db ved hjælp af VS 2005 C#

  4. Værdien af ​​tabelkolonnen med komma skal adskilles, mens separerede data vises i en visning