2009-06-16 6 views
0

Ma définition de la table:erreur MySQL 1005 sur la table créer

CREATE TABLE x (
    a INT NOT NULL, 
    FOREIGN KEY (a) REFERENCES a (id) ON UPDATE CASCADE ON DELETE CASCADE 
) ENGINE = InnoDB; 

qui produit l'erreur suivante:

ERROR 1005 (HY000): Can't create table './abc/x.frm' (errno: 150) 

Qu'est-ce que cela signifie?

+0

La table 'a' existe-t-elle déjà? –

Répondre

1

Probablement que a.id n'existe pas.

+0

Je viens de comprendre. La table a n'a pas encore été créée ... –

3

utilisation perror avec le numéro d'erreur "errno" pour obtenir le message d'erreur (perror 150):

MySQL error code 150: Foreign key constraint is incorrectly formed

4

c'est peut-être pourquoi

If you re-create a table that was dropped, it must have a definition that conforms to the foreign key constraints referencing it. It must have the right column names and types, and it must have indexes on the referenced keys, as stated earlier. If these are not satisfied, MySQL returns error number 1005 and refers to error 150 in the error message.

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

1

Cela a également se produit s'il existe des noms de clé étrangère en double.

Dites par exemple que vous avez deux tables très similaires avec des noms longs. Pour "enregistrer" l'heure, vous copiez et collez les noms de clé étrangère à partir de CREATE de la première table, puis vous êtes distrait et ne parvenez pas à mettre à jour la partie du nom de table qui est différente. Ils partagent une clé étrangère avec une autre table, ce qui donne un ou plusieurs noms de clé étrangère identiques.

Avez-vous remarqué que le fait de se taper la tête contre le moniteur n'est pas aussi satisfaisant avec un écran LCD?

0

Cette erreur est également renvoyée lorsque la table référencée n'utilise pas le format de stockage InnoDB.

Questions connexes