sql >> Databáze >  >> RDS >> Mysql

Migrace k vytvoření tabulky vyvolává Mysql2::Error:Tabulka neexistuje

Při pokusu o vytvoření nového modelu, který má odkaz na existující model, který byl vytvořen před migrací na Rails 5.1, se mi zobrazila podobná chyba.

I když to chybové hlášení nebylo příliš jasné, v mém případě se ukázalo, že problémem byl nesoulad datových typů mezi primárním klíčem starého modelu a cizím klíčem nového modelu (MySQL to neumožňuje). Bylo tomu tak proto, že od Rails 5.1 je výchozí datový typ všech primárních a cizích klíčů bigint, ale u starého modelu byl typ primárního klíče stále celé číslo.

Vyřešil jsem to převedením všech primárních a cizích klíčů současných modelů na bigint, takže mohu použít nové výchozí hodnoty Rails a zapomenout na to.

Řešením může být také zadání typu celého čísla pro nové cizí klíče tak, aby odpovídaly typu primárního klíče starých modelů. Něco jako následující:

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. Agregační funkce Oracle pro vrácení náhodné hodnoty pro skupinu?

  2. Jak Now() funguje v PostgreSQL

  3. Při používání uložené procedury v MySQL dochází ke dvěma problémům

  4. Odstraňování problémů Microsoft SQL Server Error 18456