2

次のコードがあります。

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 コマンド ラインに入力できるものがあったことを覚えているようです。 )。私が何について話しているか知っている人はいますか?

4

2 に答える 2

4

あなたが探しているのは、最後の外部キー エラーを提供するSHOW ENGINE INNODB STATUS コマンド(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 作成ステートメントに意図的にエラーを挿入しました。

于 2013-05-06T19:59:00.320 に答える
0

を探しているかもしれませんSHOW WARNINGS

MySQL ドキュメント

于 2013-05-06T19:40:40.507 に答える