Не могу мигрировать из-за внешнего ключа в рубине на хвостах - PullRequest
1 голос
/ 20 сентября 2019

Я использую ruby ​​на рельсах и пытаюсь выполнить миграцию.но это приводит к ошибке, когда я запускаю rake db: migrate

мои файлы миграции 20190613073017_create_jasas.rb

class CreateJasas < ActiveRecord::Migration
  def change
    create_table :jasas do |t|
      t.string :code
      t.string :name
      t.string :image
      t.boolean :top, default: false
      t.boolean :new, default: true
      t.string :slug
      t.references :jasa_department, index: true, foreign_key: true
      t.references :jasa_category, index: true, foreign_key: true
      t.integer :price
      t.text :description
      t.references :vendor, index: true, foreign_key: true
      t.integer :minimum_order
      t.string :short_description
      t.boolean :catalogue, default: false
      t.boolean :etalase, default: false
      t.integer :availability, default: 0
      t.integer :old_price
      t.integer :discount, default: 0
      t.boolean :status, default: true
      t.boolean :sample, default: true
      t.boolean :stock, default: true
      t.integer :views_counter, default: 0

      t.timestamps null: false
    end
    add_index :jasas, :slug, unique: true
    add_index :jasas, :code, unique: true
    add_index :jasas, :name
    add_index :jasas, :availability
    add_index :jasas, :new
    add_index :jasas, :minimum_order
    add_index :jasas, :old_price
    add_index :jasas, :price
    add_index :jasas, :created_at
  end
end

и это мое сообщение об ошибке

== 20190613073017 CreateJasas: migrating ======================================
-- create_table(:jasas)
rake aborted!
StandardError: An error has occurred, all later migrations canceled:

Mysql2::Error: Cannot add foreign key constraint: ALTER TABLE `jasas` ADD CONSTRAINT `fk_rails_f1d155c570`
FOREIGN KEY (`jasa_department_id`)
  REFERENCES `jasa_departments` (`id`)
/home/lukni/.rvm/gems/ruby-2.3.1/gems/activerecord-4.2.3/lib/active_record/connection_adapters/abstract_mysql_adapter.rb:305:in `query'

надеюсь, что естьКто-то может мне помочь

Ответы [ 2 ]

0 голосов
/ 20 сентября 2019

Пожалуйста, посмотрите на эту ссылку .

Возможная причина - несоответствие типов указанных полей.(id из jasa_department может быть int, тогда как по умолчанию эта строка t.references :jasa_department, index: true, foreign_key: true ожидает, что это bigint)

Можете ли вы попробовать отредактировать эту строку в

t.references :jasa_department, index: true, foreign_key: true, type: :integer
0 голосов
/ 20 сентября 2019

Во-первых, не индексируйте каждый столбец.Далее, я думаю, что одна из таблиц, на которые вы ссылаетесь, не существует или ваше ограничение на эти таблицы существовало.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...