Bug(バグ) #2472
Updated by Rimpei Ogawa about 13 years ago
h3. 概要
1.4.0 (3.6RC1 バンドル) で追加されたマイグレートスクリプト(リビジョン番号 9)を実行してエラーになった環境で、1.4.0.1 (3.6RC2 バンドル) で修正された同マイグレートスクリプト(リビジョン番号 9)を実行すると失敗することがある。
h3. 原因
マイグレート失敗時に DB のロールバックがおこなわれないために、1.4.0 でのマイグレート時に diary_comment_member_id_member_id の外部キー削除処理までは成功し、その次の修正後の外部キーの追加に失敗すると、外部キーは削除されたままの状態になってしまう。
この状態で 1.4.0.1 のマイグレートを実行すると、外部キー削除処理でエラーが発生してしまう。
エラーメッセージ:
<pre>
migrating of opDiaryPlugin encountered the following errors:
Error #1 - SQLSTATE[HY000]: General error: 1025 Error on rename of './sns_openpne_jp/diary_comment' to './XXXXXXXX/#sql2-393e-456bfe' (errno: 152). Failing Query: "ALTER TABLE `diary_comment` DROP FOREIGN KEY diary_comment_member_id_member_id"
</pre>
h3. 原因
マイグレート失敗時に DB のロールバックがおこなわれないために、1.4.0 でのマイグレート時に diary_comment_member_id_member_id の外部キー削除処理までは成功し、その次の修正後の外部キーの追加に失敗すると、外部キーは削除されたままの状態になってしまう。
この状態で 1.4.0.1 のマイグレートを実行すると、外部キー削除処理でエラーが発生してしまう。
失敗した環境の diary_comment テーブルの定義:
<pre>
CREATE TABLE `diary_comment` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`diary_id` int(11) NOT NULL,
`member_id` int(11) DEFAULT NULL,
`number` int(11) NOT NULL,
`body` text NOT NULL,
`has_images` tinyint(1) NOT NULL DEFAULT '0',
`created_at` datetime NOT NULL,
`updated_at` datetime NOT NULL,
PRIMARY KEY (`id`),
KEY `diary_id_number_idx` (`diary_id`,`number`),
KEY `diary_id_idx` (`diary_id`),
KEY `member_id_idx` (`member_id`),
CONSTRAINT `diary_comment_diary_id_diary_id` FOREIGN KEY (`diary_id`) REFERENCES `diary` (`id`) ON DELETE CASCADE
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
</pre>
1.4.0 (3.6RC1 バンドル) で追加されたマイグレートスクリプト(リビジョン番号 9)を実行してエラーになった環境で、1.4.0.1 (3.6RC2 バンドル) で修正された同マイグレートスクリプト(リビジョン番号 9)を実行すると失敗することがある。
h3. 原因
マイグレート失敗時に DB のロールバックがおこなわれないために、1.4.0 でのマイグレート時に diary_comment_member_id_member_id の外部キー削除処理までは成功し、その次の修正後の外部キーの追加に失敗すると、外部キーは削除されたままの状態になってしまう。
この状態で 1.4.0.1 のマイグレートを実行すると、外部キー削除処理でエラーが発生してしまう。
エラーメッセージ:
<pre>
migrating of opDiaryPlugin encountered the following errors:
Error #1 - SQLSTATE[HY000]: General error: 1025 Error on rename of './sns_openpne_jp/diary_comment' to './XXXXXXXX/#sql2-393e-456bfe' (errno: 152). Failing Query: "ALTER TABLE `diary_comment` DROP FOREIGN KEY diary_comment_member_id_member_id"
</pre>
h3. 原因
マイグレート失敗時に DB のロールバックがおこなわれないために、1.4.0 でのマイグレート時に diary_comment_member_id_member_id の外部キー削除処理までは成功し、その次の修正後の外部キーの追加に失敗すると、外部キーは削除されたままの状態になってしまう。
この状態で 1.4.0.1 のマイグレートを実行すると、外部キー削除処理でエラーが発生してしまう。
失敗した環境の diary_comment テーブルの定義:
<pre>
CREATE TABLE `diary_comment` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`diary_id` int(11) NOT NULL,
`member_id` int(11) DEFAULT NULL,
`number` int(11) NOT NULL,
`body` text NOT NULL,
`has_images` tinyint(1) NOT NULL DEFAULT '0',
`created_at` datetime NOT NULL,
`updated_at` datetime NOT NULL,
PRIMARY KEY (`id`),
KEY `diary_id_number_idx` (`diary_id`,`number`),
KEY `diary_id_idx` (`diary_id`),
KEY `member_id_idx` (`member_id`),
CONSTRAINT `diary_comment_diary_id_diary_id` FOREIGN KEY (`diary_id`) REFERENCES `diary` (`id`) ON DELETE CASCADE
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
</pre>