2016-08-20 62 views
1

我需要幫助調試遷移。Django與FOREIGN KEY的Mysql遷移錯誤150

我試圖逐步執行每個查詢,以找到django遷移停止的位置。

查詢失敗:

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

出現錯誤:

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

我拖表。

表用戶:

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 |    | 
+-------------------+--------------+------+-----+---------+----------------+ 

表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 |    | 
+------------------+--------------+------+-----+---------+----------------+ 

回答

1

我發現了一個表,用MyISAM引擎創建:

SHOW CREATE TABLE user; 

[...]

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

其他表:

mysql> SHOW CREATE TABLE elezioniAgendaCore_comments; 

[...]

) ENGINE=InnoDB DEFAULT CHARSET=latin1 | 

然後我遷移到InnoDB的兩個表。這次沒有錯誤。