0
こんにちは この見出しはここで何千回も見ましたが、これに対応する回答は見つかりませんでした。私がちょうど無知なのであれば申し訳ありません。nullable varcharsと同じ外字キーを作成できません
は、の2つのテーブルを持ってみましょう:FKはで失敗作成
CREATE TABLE `TableA` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`string_key` varchar(256) COLLATE utf8_unicode_ci DEFAULT NULL,
PRIMARY KEY (`id`),
UNIQUE KEY `string_key` (`string_key`(255))
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;
CREATE TABLE `TableB` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`referring_string_key` varchar(256) COLLATE utf8_unicode_ci DEFAULT NULL,
PRIMARY KEY (`id`),
KEY `referring_string_key` (`referring_string_key`(255))
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;
は、外部キー制約を追加することはできません。 (何もない)
ALTER TABLE `TableB`
ADD FOREIGN KEY (`referring_string_key`) REFERENCES `TableA` (`string_key`) ON DELETE SET NULL ON UPDATE CASCADE;
まあ..
- 両方のテーブルが同じ照合順序で
- 両方のカラムは、どちらの列が同じ照合順序に
- インデックスを持つ同じデータ型(
varchar(256) default null
) - のInnoDBをされています両側に設定する(TableA.string_keyインデックスが一意でない場合でも機能しない)
- イブn更新/削除イベントの組み合わせを設定する場合はn
- テーブルは空です。
何が欠けていますか?または、2つのnullable varcharsの間にFKを作成することはできません。
ありがとう、andvace。
255と照合すると255と照合されます。 – Drew
UNIQUE(str(...))は常に間違いです。一意性のために接頭辞_のみをチェックします。 –