2013-03-02 4 views
1

Je suis un débutant mysql et je travaille actuellement sur des clés étrangères. Je voudrais créer trois tables: les utilisateurs, les articles, les commandes et les relier entre euxMysql Erreur de clé étrangère 150

Table des utilisateurs:

CREATE TABLE users (
user_id INT(10) UNSIGNED ZEROFILL NOT NULL AUTO_INCREMENT, 
name VARCHAR(20) NOT NULL, 
PRIMARY KEY(user_id) 
); 

articles de table:

CREATE TABLE items (
item_id INT(10) UNSIGNED ZEROFILL NOT NULL AUTO_INCREMENT, 
name VARCHAR(20) NOT NULL, 
PRIMARY KEY(item_id) 
); 

table Commandes:

CREATE TABLE orders (
order_id INT(10) UNSIGNED ZEROFILL NOT NULL AUTO_INCREMENT, 
item_id INT, 
quantity INT(10) NOT NULL, 
user_id INT, 
PRIMARY KEY (order_id), 
FOREIGN KEY (item_id) REFERENCES items (item_id), 
FOREIGN KEY (user_id) REFERENCES users (user_id) 
); 

Mais je suis l'erreur 1005: ne peut pas créer la table 'new.orders' (erreur: 150)

Quel est le problème avec mon code?

Merci!

Répondre

5

Les types de données de la colonne de la table primaire et les colonnes de la table de référence doivent correspondre exactement. Dans vos définitions, items.item_id est INT UNSIGNED, tandis que la clé étrangère orders.item_id est INT (implicitement SIGNED). La même chose est vraie pour user_id.

Modifier la définition comme suit, en ajoutant UNSIGNED pour les deux:

CREATE TABLE orders (
    order_id INT(10) UNSIGNED ZEROFILL NOT NULL AUTO_INCREMENT, 
    item_id INT UNSIGNED, 
    quantity INT(10) NOT NULL, 
    user_id INT UNSIGNED, 
    PRIMARY KEY (order_id), 
    FOREIGN KEY (item_id) REFERENCES items (item_id), 
    FOREIGN KEY (user_id) REFERENCES users (user_id) 
); 

Il construit ensuite correctement: http://sqlfiddle.com/#!2/cfab8

+0

Merci, le problème a été résolu – nut

2

Il n'y a pas de colonne student_id dans la table des éléments. Voulez-vous dire user_id dans le tableau des utilisateurs?

+0

merci, je viens de modifier, mais toujours eu le problème – nut

+0

lol édité à nouveau, merci, mais toujours eu le problème – nut

Questions connexes