Ошибка SQL 1215 не удается добавить внешний ключ

Я не могу добавить к своей таблице простой внешний ключ. Раньше мне удавалось добавлять внешние ключи, но только типа INT или BIGINT. Я пытаюсь сделать это типа VARCHAR и получаю ошибку 1215 с описанием, неспособным добавить ограничение внешнего ключа.

Команда, вызывающая сбой:

 ALTER TABLE `TradingAccount` 
 ADD CONSTRAINT `email`
   FOREIGN KEY (`owner_id`)
   REFERENCES `User` (`email`)
   ON DELETE NO ACTION
   ON UPDATE NO ACTION;

И owner_id, и адрес электронной почты имеют тип данных VARCHAR (255).

Я использую MySQL Workbench и чувствую, что есть некоторая неправильная конфигурация, которая не позволяет мне использовать varchar для ограничения внешнего ключа? Мне нужно настроить mysqlworkbench для использования INNODB или это значение по умолчанию.

Любая помощь была бы замечательной, ура.


person Community    schedule 31.08.2017    source источник
comment
Типы данных должны быть идентичными, поэтому вам придется связать varchar с varchar (которым, вероятно, не является идентификатор владельца).   -  person Solarflare    schedule 31.08.2017
comment
owner_id и адрес электронной почты имеют тип varchar (255)   -  person    schedule 31.08.2017
comment
Можете ли вы добавить описание таблиц для обеих таблиц (show create table user, show create table TradingAccount? Если хотите, вы можете удалить все неиспользуемые столбцы, но должны оставить каждый индекс / ключ в User в нем (у вас может не быть индекса на email там).   -  person Solarflare    schedule 31.08.2017


Ответы (1)


Я предполагаю, что TradingAccount.owner_id и / или OwnerMaster.owner_id - это не совсем тот же тип данных, что и TradingAccount.owner_id и OwnerMaster.owner_id.

person Abhishek Sharma    schedule 31.08.2017
comment
Оба являются varchar (255) - person ; 31.08.2017