2013-05-06 36 views
1

我有以下代碼:如何查找MySQL錯誤的詳細信息?

ALTER TABLE users MODIFY id int unsigned; 

會拋出以下錯誤:

ERROR 1025 (HY000) at line 114: Error on rename of './mydb/#sql-146dd_1d' to './mydb/users' (errno: 150) 

我相當肯定,這是因爲外鍵的問題,但我想找到更多有關錯誤的詳細信息。

我似乎記得我有一些東西可以進入mySQL命令行,它會顯示各種類型問題(包括外鍵問題)的最新錯誤列表以及關於確切原因的更多詳細信息(如涉及的表格)。有人知道我在說什麼嗎?

+0

@MikeBrant,這不是我要找的。我談論的事情顯示了我所擁有的最後一個外鍵錯誤以及涉及的表格。 – 2013-05-06 19:33:48

+0

確定您不是在考慮Oracle SQL * Plus中的「顯示錯誤」? – criticalfix 2013-05-06 19:40:01

+1

使用您最喜愛的搜索引擎搜索錯誤號碼? – 2013-05-06 19:41:43

回答

2

我想你正在尋找的是SHOW ENGINE INNODB STATUScommand(我假設InnoDB引擎),它提供的最後一個外鍵錯誤。

mysql> CREATE TABLE `T1`(`id` int(10) unsigned NOT NULL AUTO_INCREMENT,PRIMARY KEY (`id`)) ENGINE=InnoDB; 
mysql> CREATE TABLE `T2` (`id` int(10) unsigned NOT NULL AUTO_INCREMENT, `refer_id` int(10) unsigned NOT NULL, PRIMARY KEY (`id`), KEY `refer_id` (`refer_id`), CONSTRAINT `t2_id_to_t1_id` FOREIGN KEY (`refer_id`) REFERENCES `T1`.`id` ON DELETE CASCADE ON UPDATE CASCADE) ENGINE=InnoDB; 
ERROR 1005 (HY000): Can't create table 'TEMP.T2' (errno: 150) 

mysql> SHOW ENGINE INNODB STATUS; 
[...] 
------------------------ 
LATEST FOREIGN KEY ERROR 
------------------------ 
130506 15:50:41 Error in foreign key constraint of table TEMP/T2: FOREIGN KEY (`refer_id`) REFERENCES `T1`.`id` ON DELETE CASCADE ON UPDATE CASCADE) ENGINE=InnoDB: Cannot resolve table name close to: ON DELETE CASCADE ON UPDATE CASCADE) ENGINE=InnoDB 
[...] 

mysql> CREATE TABLE `T2` (`id` int(10) unsigned NOT NULL AUTO_INCREMENT, `refer_id` int(10) unsigned NOT NULL, PRIMARY KEY (`id`), KEY `refer_id` (`refer_id`), CONSTRAINT `t2_id_to_t1_id` FOREIGN KEY (`refer_id`) REFERENCES `T1`(`id`) ON DELETE CASCADE ON UPDATE CASCADE) ENGINE=InnoDB; 
Query OK, 0 rows affected (0.04 sec) 

我故意插入錯誤到表T2創建語句來演示外鍵錯誤輸出(在這種情況下,模式分辨率)。

+0

是的,謝謝查爾斯! – 2013-05-06 20:50:04