2016-08-20 3 views
1

J'ai besoin d'aide pour déboguer une migration.Django Mysql Erreur de migration 150 avec clé étrangère

J'ai essayé d'exécuter chaque requête étape par étape pour trouver où s'arrête la migration django.

Cette requête échoue:

mysql> ALTER TABLE `elezioniAgendaCore_comments` ADD CONSTRAINT `elezioniAgendaCore_comments_uid_id_670175fa07fa7b47_fk_user_uid` FOREIGN KEY (`uid_id`) REFERENCES `user` (`uid`); 

avec erreur:

ERROR 1005 (HY000): Can't create table 'activedoc.#sql-3f7_2b' (errno: 150) 

J'ai des tables de remorquage.

TABLE utilisateur:

mysql> show columns from user; 
+-------------------+--------------+------+-----+---------+----------------+ 
| Field    | Type   | Null | Key | Default | Extra   | 
+-------------------+--------------+------+-----+---------+----------------+ 
| uid    | bigint(20) | NO | PRI | NULL | auto_increment | 
| name    | varchar(50) | YES | MUL | NULL |    | 
| surname   | varchar(50) | YES | MUL | NULL |    | 
| email    | varchar(100) | YES | MUL | NULL |    | 
+-------------------+--------------+------+-----+---------+----------------+ 

TABLEAU elezioniAgendaComments:

mysql> show columns from elezioniAgendaCore_comments; 
+------------------+--------------+------+-----+---------+----------------+ 
| Field   | Type   | Null | Key | Default | Extra   | 
+------------------+--------------+------+-----+---------+----------------+ 
| id    | int(11)  | NO | PRI | NULL | auto_increment | 
| signature  | varchar(255) | NO |  | NULL |    | 
| message   | longtext  | NO |  | NULL |    | 
| created   | datetime  | NO |  | NULL |    | 
| published  | tinyint(1) | NO |  | NULL |    | 
| adempimento_id | int(11)  | NO | MUL | NULL |    | 
| parentComment_id | int(11)  | YES | MUL | NULL |    | 
| uid_id   | bigint(20) | NO |  | NULL |    | 
+------------------+--------------+------+-----+---------+----------------+ 

Répondre

1

je trouve une table a été créée avec le moteur MyISAM:

SHOW CREATE TABLE user; 

[...]

) ENGINE=MyISAM AUTO_INCREMENT=307 DEFAULT CHARSET=latin1 | 

L'autre table:

mysql> SHOW CREATE TABLE elezioniAgendaCore_comments; 

[...]

) ENGINE=InnoDB DEFAULT CHARSET=latin1 | 

Je migré vers les deux tables InnoDB. Pas d'erreurs cette fois.