お世話になります。
MySQLにあらかじめ作成していた各テーブルごとの外部キー制約の張りなおしをしたく、既存の外部キー制約を削除実行をすると、下記の表示が出ます。
mysql> alter table ices drop foreign key ices_ibfk_1; ERROR 1091 (42000): Can't DROP 'ices_ibfk_1'; check that column/key exists mysql> alter table comments drop foreign key comments_ibfk_1; ERROR 1091 (42000): Can't DROP 'comments_ibfk_1'; check that column/key exists
以前、同様のエラーが出た際には、削除でき、張りなおしすることができましたが、今回は上記エラーのまま、削除ができない状況が続きます。
テーブルの構成上、何か他の要素を事前に削除する必要があるのでしょうか。
■知りたいこと:
既存の外部キー制約を削除するための確認するポイントと方法
お手数をおかけしますが、ご教示いただけると幸いです。
▽現在、外部キー制約を設定しているテーブルの構成です
■icesテーブル
+----------------+-----------------+------+-----+---------+----------------+ | Field | Type | Null | Key | Default | Extra | +----------------+-----------------+------+-----+---------+----------------+ | id | int(11) | NO | PRI | NULL | auto_increment | | user_id | int(11) | NO | MUL | NULL | | | manufacturer | varchar(50) | NO | | NULL | | | ice_name | varchar(50) | NO | | NULL | | | ice_fraver | varchar(50) | NO | | NULL | | | price_no_tax | int(5) unsigned | NO | | NULL | | | buy_year | int(4) unsigned | NO | | NULL | | | buy_month | int(2) unsigned | NO | | NULL | | | image_file | varchar(255) | YES | | NULL | | | created | datetime | YES | | NULL | | | modified | datetime | YES | | NULL | | | simple_comment | varchar(20) | NO | | NULL | | | desc_comment | varchar(100) | NO | | NULL | | | repeat_rate | int(11) | YES | | NULL | | | stock_rate | int(11) | YES | | NULL | | +----------------+-----------------+------+-----+---------+----------------+ mysql> show create table ices \G *************************** 1. row *************************** Table: ices Create Table: CREATE TABLE `ices` ( `id` int(11) NOT NULL AUTO_INCREMENT, `user_id` int(11) NOT NULL, `manufacturer` varchar(50) NOT NULL, `ice_name` varchar(50) NOT NULL, `ice_fraver` varchar(50) NOT NULL, `price_no_tax` int(5) unsigned NOT NULL, `buy_year` int(4) unsigned NOT NULL, `buy_month` int(2) unsigned NOT NULL, `image_file` varchar(255) DEFAULT NULL, `created` datetime DEFAULT NULL, `modified` datetime DEFAULT NULL, `simple_comment` varchar(20) NOT NULL, `desc_comment` varchar(100) NOT NULL, `repeat_rate` int(11) DEFAULT NULL, `stock_rate` int(11) DEFAULT NULL, PRIMARY KEY (`id`), KEY `ices_ibfk_1` (`user_id`) ) ENGINE=InnoDB AUTO_INCREMENT=6 DEFAULT CHARSET=utf8mb4
■commentsテーブル
+-------------+--------------+------+-----+---------+----------------+ | Field | Type | Null | Key | Default | Extra | +-------------+--------------+------+-----+---------+----------------+ | id | int(11) | NO | PRI | NULL | auto_increment | | ice_id | int(11) | NO | MUL | NULL | | | user_id | int(11) | NO | | NULL | | | comment | varchar(100) | NO | | NULL | | | repeat_rate | int(11) | YES | | NULL | | | stock_rate | int(11) | YES | | NULL | | | created | datetime | YES | | NULL | | | modified | datetime | YES | | NULL | | +-------------+--------------+------+-----+---------+----------------+ mysql> show create table comments \G *************************** 1. row *************************** Table: comments Create Table: CREATE TABLE `comments` ( `id` int(11) NOT NULL AUTO_INCREMENT, `ice_id` int(11) NOT NULL, `user_id` int(11) NOT NULL, `comment` varchar(100) NOT NULL, `repeat_rate` int(11) DEFAULT NULL, `stock_rate` int(11) DEFAULT NULL, `created` datetime DEFAULT NULL, `modified` datetime DEFAULT NULL, PRIMARY KEY (`id`), KEY `comments_ibfk_1` (`ice_id`) ) ENGINE=InnoDB AUTO_INCREMENT=17 DEFAULT CHARSET=utf8mb4 1 row in set (0.00 sec)
その外部キーって、それぞれ何をやっているのか。
内容からして、phpとかcakephpは全く関係ない。
FOREIGN KEYって書いていないけど、本当に外部キーなのだろうか?
回答1件
あなたの回答
tips
プレビュー