2014-05-06 2 views
0

bien que ce soit une question à répétition, J'ai cherché dans la plupart des messages similaires, mais n'a trouvé rien d'utile. Voici mon script SQL pour MySQL.MySQL errno 150 sans solution encore

CREATE DATABASE IF NOT EXISTS store; 
USE store; 
CREATE TABLE IF NOT EXISTS Box (
coord VARCHAR (255), 
box_id INT UNSIGNED NOT NULL, 
img_path VARCHAR (256), 
PRIMARY KEY (coord, box_id) 
); 
CREATE TABLE IF NOT EXISTS Tool (
serial VARCHAR (50), 
tool_id INT, 
descr VARCHAR (256), 
box_id INT UNSIGNED NOT NULL, 
tool_state BOOLEAN, 
PRIMARY KEY (tool_id), 
FOREIGN KEY (box_id) REFERENCES Box(box_id) 
); 

sortie est: ERREUR 1005 (HY000) à la ligne 9: Ne peut pas créer la table 'store.Tool' (errno: 150) Toute suggestion

+0

Dans votre première table La clé primaire de la boîte se compose de 2 colonnes, mais dans la seconde vous utilisez seulement 1 colonne – StanislavL

+0

voir http://stackoverflow.com/questions/953035/multiple-column-foreign-key-in-mysql – StanislavL

Répondre

1

De: http://dev.mysql.com/doc/refman/5.1/en/innodb-foreign-key-constraints.html

Si vous recréez une table qui a été supprimée, elle doit avoir une définition conforme aux contraintes de clé étrangère la référençant. Elle doit avoir les noms et les types de colonne appropriés et doit contenir des index sur le référencé k eys, comme indiqué précédemment. Si ceux-ci ne sont pas satisfaits, MySQL renvoie le numéro d'erreur 1005 et fait référence à l'erreur 150 dans le message d'erreur .

Je suppose que vous devez utiliser la même quantité de clé étrangère, dans votre code que vous utilisez 2 PK dans l'encadré de la table, donc soit vous utilisez uniquement box_id que votre PK ou ajouter clé étrangère à la table d'outils ..

+0

Merci pour éclaircir mon chemin. PK est composé par box_id, et coord est maintenant laissé comme champ UNIQUE. Je vous remercie – Mayhem

Questions connexes