他の回答は非常に役に立ちますが、私の経験も共有したかっただけです。
他のテーブル ( with dataid
)で外部キーとして既に参照されているテーブルを削除し、追加の列を使用してテーブルを再作成/インポートしようとしたときに、問題に直面しました。
レクリエーションのクエリ (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;