他の回答は非常に役に立ちますが、私の経験も共有したかっただけです。
id
他のテーブルで(データを使用して)外部キーとしてすでに参照されているテーブルを削除し、いくつかの追加の列を含むテーブルを再作成またはインポートしようとしたときに、問題に直面しました。
レクリエーションのクエリ(phpMyAdminで生成)は次のようになります。
CREATE TABLE `the_table` (
`id` int(11) NOT NULL, /* No PRIMARY KEY index */
`name` varchar(255) NOT NULL,
`name_fa` varchar(255) NOT NULL,
`name_pa` varchar(255) NOT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
... /* SOME DATA DUMP OPERATION */
ALTER TABLE `the_table`
ADD PRIMARY KEY (`id`), /* PRIMARY KEY INDEX */
ADD UNIQUE KEY `uk_acu_donor_name` (`name`);
お気づきかもしれませんが、PRIMARY KEY
インデックスは作成(およびデータの挿入)後に設定されたため、問題が発生していました。
解決
解決策は、外部キーとして参照されPRIMARY KEY
てid
いたのテーブル定義クエリにインデックスを追加すると同時にALTER TABLE
、インデックスが設定されている部分からインデックスを削除することでした。
CREATE TABLE `the_table` (
`id` int(11) NOT NULL PRIMARY KEY, /* <<== PRIMARY KEY INDEX ON CREATION */
`name` varchar(255) NOT NULL,
`name_fa` varchar(255) NOT NULL,
`name_pa` varchar(255) NOT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
table2.IDFromTable1
とはtable1.ID
?