Я создал файл миграции со следующим контентом. Он отлично работает с SQLite, но когда я переключаюсь на MySQL, я получаю сообщение« Can not create table "(см. ниже).Два внешних ключа повышают «Может» создать таблицу »на MySQL AUTO_INCREMENT PRIMARY KEY
class CreateVisits < ActiveRecord::Migration[5.0]
def change
create_table :visits, :primary_key => :id do |t|
t.references :user, foreign_key: true
t.references :visitor, foreign_key: "User"
t.timestamps
end
add_index :visits, [:user_id, :visitor_id], unique: true
end
end
MySQL выдает ошибку:
Mysql2::Error: Can't create table 'myapp_development.visits' (errno: 150):
CREATE TABLE `visits` (
`id` int AUTO_INCREMENT PRIMARY KEY,
`user_id` int,
`visitor_id` int,
`created_at` datetime NOT NULL,
`updated_at` datetime NOT NULL,
INDEX `index_visits_on_user_id` (`user_id`),
INDEX `index_visits_on_visitor_id` (`visitor_id`),
CONSTRAINT `fk_rails_09e5e7c20b`
FOREIGN KEY (`user_id`)
REFERENCES `users` (`id`),
CONSTRAINT `fk_rails_b156c396f4`
FOREIGN KEY (`visitor_id`)
REFERENCES `visitors` (`id`)
)
ENGINE=InnoDB
Идеи приветствуются!
У вас есть таблица 'users' и таблица' users', созданная до создания этой таблицы 'посещений'? –
таблица пользователей была создана ранее. Таблица посещений содержит 2 столбца: user_id и visitor_id, которые оба связаны с 1 записью в таблице пользователей –
, как насчет таблицы 'visitors'? это похоже на то, что mysql пытается создать ссылку, но не смог найти одну из таблиц, которую он пытается ссылаться на –