Mysql
 sql >> база данни >  >> RDS >> Mysql

Мигрирането за създаване на таблица повдига Mysql2::Error:Таблицата не съществува

Получих подобна грешка, когато се опитах да създам нов модел, който има препратка към съществуващ модел, създаден преди мигрирането към Rails 5.1.

Въпреки че съобщението за грешка не беше много ясно за това, в моя случай се оказа, че проблемът е несъответствие на типа данни между първичния ключ на стария модел и външния ключ на новия модел (MySQL не позволява това). Това беше така, защото от Rails 5.1 типът данни по подразбиране на всички първични и външни ключове е bigint, но за стария модел типът първичен ключ все още беше цяло число.

Реших това, като конвертирах всички първични и външни ключове на текущите модели в bigint, така че мога да използвам новите настройки по подразбиране на Rails и да забравя за това.

Заобиколно решение може също да бъде указване на целочислен тип за новите външни ключове, така че да съответстват на типа първични ключове на старите модели. Нещо като следното:

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. пренапишете връзката и заявката от mysql към PDO

  2. Дублирайте запис в MySQL

  3. MySQL декартов продукт между два оператора SELECT

  4. Заявката Map<KEY, VALUE> на JPA от JPQL не успя

  5. MySQL брои всички външни ограничения