Foreign key constraint is incorrectly formed?
Hi, ich möchte ein SQL Statement in meine DB setzen aber leider bekomme ich diese Fehlermeldung hier: #1005 - Kann Tabelle `winterbazar`.`message_status` nicht erzeugen (Fehler: 150 "Foreign key constraint is incorrectly formed")
SQL Statement: CREATE TABLE message_status (
status_id INT PRIMARY KEY AUTO_INCREMENT,
message_id INT,
user_id INT,
status VARCHAR(20),
FOREIGN KEY (message_id) REFERENCES messages(message_id),
FOREIGN KEY (user_id) REFERENCES users(user_id)
);
Weiß jemand von euch Rat?
LG Philip
2 Antworten
Ich bin auch kein SQL Profi, aber der Syntax und Fehlermeldung nach zu urteilen, sind die Datentypen der foreigned Felder nicht gleich. Du möchtest ja praktisch auf einen Fremdschlüssel verweisen, dieser hat aber nunmal ein anderes Format, als die Spalte, die du jetzt erzeugen möchtest.
Kontrollier einfach mal, ob die Fremdschlüsselzelle die gleichen Datentypen annimmt, wie deine Tabelle hier.
Evtl. mal mit "SHOW ENGINE InnoDB STATUS" hinterher nachschauen, was ihm nicht passt.
- Datentypen der Spalten in beiden Tabellen gleich ?
- Gibt es einen Index in der referenzierten Tabelle auf diese Spalte ?
wenn ich das folgende in einer testdb werfe, läuft das:
CREATE TABLE messages (
message_id INT AUTO_INCREMENT KEY
);
CREATE TABLE users (
user_id INT AUTO_INCREMENT KEY
);
CREATE TABLE message_status (
status_id INT PRIMARY KEY AUTO_INCREMENT,
message_id INT,
user_id INT,
status VARCHAR(20),
FOREIGN KEY (message_id) REFERENCES messages(message_id),
FOREIGN KEY (user_id) REFERENCES users(user_id)
);
show tables;