mysql - 如何找到MySQL错误的详细信息?

标签 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 命令行中输入一些东西,它会显示各种类型问题(包括外键问题)的最新错误列表以及关于确切原因的更多详细信息(例如涉及的表)。有人知道我在说什么吗?

最佳答案

我认为您正在寻找的是SHOW ENGINE INNODB STATUS command (我假设是 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 创建语句中插入了一个错误,以演示外键错误的输出(在本例中为架构解析)。

关于mysql - 如何找到MySQL错误的详细信息?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16405775/

相关文章:

mysql - 使用其他列的数据(MySQL 中的 UPDATE)

mysql - 将文本文件中的特定列导入 mysql.. 这可能吗?

mysql - 如何正确安装MySQL Ruby Gem

php - Eloquent hasManyThrough 也获取数据透视表记录

php - 无法从数据库中获取当前月份和年份

php - 初学者@SQL : SQL query Error

mysql - INET_ATON - mysql 查询到 ms-sql 查询

php - 在 PHP 中格式化数据库日期变量

java - MySQL 连接器 jar 版本如何影响查询性能?

mysql - 如何在 MySQL 中使用包含转义字符的字符串进行更新