1

ですから、ここで少し問題があり、問題を解決できないようです。新しいテーブルAssessment_Subsection_To_Groupを作成しているので、列と外部キーを追加してAssessment_Subsection、それらの間にリンクを作成する必要があります。

私がこれまでに持っているコードを以下に示します。

CREATE TABLE IF NOT EXISTS `Assessment_Subsection_To_Group` (
    `assessment_subsection_to_group_id` INT(11) UNSIGNED NOT NULL AUTO_INCREMENT,
    `title` VARCHAR(255) NOT NULL,
    `time_created` DATETIME NOT NULL,
    `time_modified` TIMESTAMP NOT NULL ON UPDATE CURRENT_TIMESTAMP,
    `person_id_created` INT(11) UNSIGNED NOT NULL,
    `person_id_modified` INT(11) UNSIGNED NOT NULL,
    PRIMARY KEY (`assessment_subsection_to_group_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

ALTER TABLE `Assessment_Subsection`
ADD COLUMN `assessment_subsection_to_group_id` INT(11) UNSIGNED NOT NULL FIRST,
ADD FOREIGN KEY `assessment_subsection_to_group_id_ibfk` (`assessment_subsection_to_group_id`) REFERENCES `Assessment_Subsection_To_Group` (`assessment_subsection_to_group_id`);

Assessment_Subsection制約を追加しようと変更しようとすると、予想どおりに問題が発生します。このエラーが発生します:

ERROR 1452 (23000): Cannot add or update a child row: a foreign key constraint fails (`at`.<result 2 when explaining filename '#sql-47f_48'>, CONSTRAINT `assessment_subsection_to_group_id_ibfk` FOREIGN KEY (`assessment_subsection_to_group_id`) REFERENCES `Assessment_Subsection_)

show engine innodb status;次に、このメッセージが表示されたものを確認しました。私はそれの物語の頭を作ることはできません。SQLは私には正しく見えますが、明らかに何かが欠けています。

ALTER TABLE `Assessment_Subsection` ADD COLUMN `assessment_subsection_to_group_id` INT (11) UNSIGNED NOT NULL FIRST, ADD CONSTRAINT `assessment_subsec
Foreign key constraint fails for table `at`.<result 2 when explaining filename '#sql-47f_48'>:
,CONSTRAINT `assessment_subsection_to_group_id_ibfk` FOREIGN KEY (`assessment_subsection_to_group_id`) REFERENCES `Assessment_Subsection_To_Group` (`
Trying to add in child table, in index `assessment_subsection_to_group_id_ibfk` tuple:
DATA TUPLE: 2 fields;
 0: len 4; hex 00000000; asc     ;;
 1: len 4; hex 8000000b; asc     ;;

But in parent table `at`.`Assessment_Subsection_To_Group`, in index `PRIMARY`,
the closest match we can find is record:
PHYSICAL RECORD: n_fields 1; compact format; info bits 0
0: len 8; hex 696e66696d756d00; asc infimum ;;

前もって感謝します。

4

2 に答える 2

1

そうです、私はこれを解決したと思います。

Assessment_Subsection_To_Group空のテーブルを作成しました。

Assessment_Subsectionのテーブルにはすでにたくさんのデータが含まれています。に新しい列を追加すると、その列にデフォルト値のが入力されました0。したがって、外部キーを追加しようとすると、列Assessment_Subsection0値が表示され、Assessment_Subsection_To_Groupテーブルにそれを参照するものが何も表示されず、そのダミーが吐き出されます。

そこで、レコードをに追加し、追加したばかりのレコードのIDと一致するようにAssessment_Subsection_To_Group列を更新して、外部キーを再度追加しようとすると、問題が解決しました。0Assessment_Subsection_To_Group

確かにこれを行うためのより簡単な方法が必要ですか?

于 2012-08-10T19:12:43.837 に答える
0

変更を2つの段階に分割します。1つの列に列を追加してから、別の列に外部キーを追加します。列は変更が完了するまで存在しませんが、列を作成するステートメント内から列を使用して何かを実行しようとしています。

たとえば、パンがまだミキサーにある間に、パンを焼く前にバターを塗ろうとしています。

于 2012-08-10T18:23:16.463 に答える