外部キー制約が機能しない理由がわからないようです。これが私のテーブルスキーマです:
CREATE TABLE `templates_textboxes` (
`id` int(10) unsigned NOT NULL AUTO_INCREMENT,
`template_id` int(10) unsigned DEFAULT NULL,
`textbox_id` int(10) unsigned DEFAULT NULL,
PRIMARY KEY (`id`),
KEY `templates_textboxes_to_templates_idx` (`template_id`),
KEY `templates_textboxes_to_textboxes_idx` (`textbox_id`),
CONSTRAINT `templates_textboxes_to_templates` FOREIGN KEY (`template_id`) REFERENCES `templates` (`id`) ON DELETE CASCADE ON UPDATE NO ACTION
) ENGINE=InnoDB AUTO_INCREMENT=6 DEFAULT CHARSET=latin1$$
CREATE TABLE `textboxes` (
`id` int(10) unsigned NOT NULL AUTO_INCREMENT,
`content` text NOT NULL,
`columns` tinyint(1) unsigned NOT NULL DEFAULT '1',
`width` int(5) unsigned NOT NULL DEFAULT '0',
`height` int(5) unsigned NOT NULL DEFAULT '0',
`x` int(5) unsigned NOT NULL DEFAULT '0',
`y` int(5) unsigned NOT NULL DEFAULT '0',
`z` int(5) unsigned NOT NULL DEFAULT '500',
PRIMARY KEY (`id`),
CONSTRAINT `textboxes_to_templates_textboxes` FOREIGN KEY (`id`) REFERENCES `templates_textboxes` (`textbox_id`) ON DELETE CASCADE ON UPDATE NO ACTION
) ENGINE=InnoDB AUTO_INCREMENT=21 DEFAULT CHARSET=utf8$$
PHPでテキストボックスを作成するときは、最初にテキストボックスに挿入してIDを取得し、次に一致テーブルtemplates_textboxesにテンプレートIDと新しいテキストボックスIDの行を挿入します。nullを許可する外部キーについてここで見つけることができるすべての投稿を読みました。それが行うことは、nullを許可するように外部キー列(templates_textboxes.textbox_id)を設定することだけです。それを試しましたが、テキストボックスに挿入しようとすると、次のエラーが発生します。
エラー番号:1452 子行を追加または更新できません:外部キー制約が失敗します( `pitchperfect`.`textboxes`、CONSTRAINT` textboxes_to_templates_textboxes` FOREIGN KEY( `id`)REFERENCES` templates_textboxes`( `textbox_id`)ON DELETE CASCADE ON UPDATE NO ACTION)INSERT INTO `textboxes`(` content`、 `columns`、` width`、 `height`、` x`、 `y`、` z`)VALUES(''、 '1'、 '400'、 '300' 、'133'、 '93'、 '500')
私が達成しようとしているのは、テーマからテンプレートとそのアセット(templates_textboxes-> textboxes)へのカスケード削除チェーンを使用することです。ありがとう!