Mysql
 sql >> Baza danych >  >> RDS >> Mysql

Migracja w celu utworzenia tabeli podnosi Mysql2::Błąd:Tabela nie istnieje

Podobny błąd wystąpił podczas próby utworzenia nowego modelu, który ma odniesienie do istniejącego modelu, który został utworzony przed migracją do Rails 5.1.

Chociaż komunikat o błędzie nie był bardzo jasny, w moim przypadku okazało się, że problemem była niezgodność typu danych między kluczem podstawowym starego modelu a kluczem obcym nowego modelu (MySQL na to nie pozwala). Stało się tak, ponieważ od Rails 5.1 domyślnym typem danych wszystkich kluczy głównych i obcych jest bigint, ale w starym modelu głównym typem klucza był nadal liczba całkowita.

Rozwiązałem to, konwertując wszystkie podstawowe i obce klucze obecnych modeli na bigint, dzięki czemu mogę użyć nowych ustawień domyślnych Railsów i zapomnieć o tym.

Obejściem może być również określenie typu liczb całkowitych dla nowych kluczy obcych, tak aby były one zgodne z typem kluczy podstawowych starych modeli. Coś takiego:

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. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. nieznana liczba parametrów w bind_param

  2. Wypełnij dane grupy do określonej serii na Highcharts

  3. Jak uzyskać nazwy kolumn tabeli w bazie danych w zend?

  4. Jaka jest różnica między tinyint, smallint, mediumint, bigint i int w MySQL?

  5. C# DateTime MySQL Polecenie