2017-08-31 2 views
0

Ich kann meiner Tabelle keinen einfachen Fremdschlüssel hinzufügen. Ich konnte vorher Fremdschlüssel hinzufügen, jedoch nur vom Typ INT oder BIGINT. Ich versuche, dies vom Typ VARCHAR zu machen, und erhalte einen 1215-Fehler mit der Beschreibung, die keine Fremdschlüsseleinschränkung hinzufügen kann.SQL-Fehler 1215 kann den Fremdschlüssel nicht hinzufügen

Befehl, den Fehler verursacht:

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

Sowohl owner_id und E-Mail sind vom Datentyp VARCHAR (255).

Ich verwende MySQL Workbench und habe das Gefühl, dass es eine Fehlkonfiguration gibt, die es mir nicht erlaubt, Varchar für Fremdschlüsseleinschränkungen zu verwenden? Muss ich mysqlworkbench für die Verwendung von INNODB einrichten oder ist dies der Standard?

Jede Hilfe wäre toll, Prost.

+0

Die Datentypen müssen identisch sein, daher müssen Sie einen varchar auf ein varchar verweisen (was die Eigentümer-ID wahrscheinlich nicht ist). – Solarflare

+0

owner_id und email sind beide vom Typ varchar (255) –

+1

Können Sie die Tabellenbeschreibung beider Tabellen hinzufügen ('show create table user',' show create table TradingAccount'? Wenn Sie möchten, können Sie alle nicht verwendeten Spalten entfernen, aber haben um jeden Index/Schlüssel in 'User' zu belassen (Sie haben dort möglicherweise keinen Index für' email'). – Solarflare

Antwort

0

Ich vermute, dass TradingAccount.owner_id und/oder OwnerMaster.owner_id nicht genau den gleichen Datentyp wie TradingAccount.owner_id und OwnerMaster.owner_id sind.

+0

Beide sind varchar (255) –

Verwandte Themen