外部キーとしてvarcharカラムを持つテーブルを作成しようとしていますが、MySqlはテーブルの作成中にエラーが発生します。私のクエリは、このようなものです:外部キーとしてvarcharカラムを持つMySQLテーブル
CREATE TABLE network_classes (
id TINYINT(1) UNSIGNED NOT NULL AUTO_INCREMENT,
category VARCHAR(80) NOT NULL,
PRIMARY KEY(id),
KEY `key_1` (`id`,`category`)
)
ENGINE=InnoDB;
CREATE TABLE networks (
id TINYINT(3) UNSIGNED NOT NULL AUTO_INCREMENT,
name VARCHAR(100) NOT NULL,
category VARCHAR(80) NOT NULL,
director_id TINYINT(3) UNSIGNED NULL,
director_name VARCHAR(100) NULL,
description VARCHAR(1000) NULL,
last_modified TIMESTAMP NULL DEFAULT CURRENT_TIMESTAMP,
user_id SMALLINT UNSIGNED NULL,
PRIMARY KEY(id),
KEY `networks_fk1` (`category`),
CONSTRAINT `networks_fk1` FOREIGN KEY (`category`) REFERENCES `network_classes` (`category`) ON DELETE NO ACTION,
INDEX networks_index2471(name),
INDEX networks_index2472(director_id, director_name)
)
ENGINE=InnoDB;
と私はこのエラーを取得する:
[Err] 1215 - Cannot add foreign key constraint
私は、MySQL 5.6.12を使用しています。クエリを修正するにはどうすればよいですか?あなたはnetwork_classessの代わりに、(自分の作成テーブル・スクリプトのように)network_classesを使用していた
CONSTRAINT `networks_fk1` FOREIGN KEY (`category`)
REFERENCES `network_classess` (`category`) ON DELETE NO ACTION,
で
たい外部キーを追加することができるはずのように、あなたのnetwork_classesテーブルを変更し、私はそれを修正したが、まだあなたのnetwork_classessが空である –
同じ問題を持っています?別のことは、複合主キーを定義する場合、外部キーは等しくなければなりません(エラーには影響ありません) –
はい、そうです。あなたの側でクエリを実行していただけますか?理論的想像よりも実用的な解決策を探しています。 –