1. ホーム
  2. mysql

[解決済み] MySQLです。テーブルを作成できません (errno: 150)

2022-02-07 04:01:41

質問

.sqlファイルをインポートしようとしていますが、テーブルの作成に失敗しています。

以下は、失敗するクエリです。

CREATE TABLE `data` (
`id` int(10) unsigned NOT NULL,
`name` varchar(100) NOT NULL,
`value` varchar(15) NOT NULL,
UNIQUE KEY `id` (`id`,`name`),
CONSTRAINT `data_ibfk_1` FOREIGN KEY (`id`) REFERENCES `keywords` (`id`) ON DELETE CASCADE ON UPDATE CASCADE
) ENGINE=InnoDB DEFAULT CHARSET=latin1;    

同じデータベースから.sqlをエクスポートし、すべてのテーブルを削除して、今それをインポートしようとしている、なぜそれが失敗していますか?

MySQLです。テーブル './dbname/data.frm' を作成できません (errno: 150)

解決方法は?

からの MySQL - FOREIGN KEY 制約のドキュメント :

<ブロッククオート

削除されたテーブルを再作成する場合、それを参照する外部キー制約に適合する定義を持つ必要があります。正しいカラム名と型を持ち、前述のように、参照されるキーにインデックスを持たなければなりません。 これらが満たされない場合、MySQLはエラー1005を返し、エラーメッセージの中でエラー150を参照します。これは、外部キー制約が正しく形成されていないことを意味します。 同様に、エラー150のためにALTER TABLEが失敗した場合、これは変更されたテーブルの外部キー定義が正しく形成されていないことを意味します。