Hinzufügen eines Fremdschlüssels vom Typ char in mysql

Ich habe ein Problem beim Hinzufügen eines Fremdschlüssels in MySQL (mit phpmyadmin).

ALTER TABLE `production_x_country` ADD  FOREIGN KEY (`country`) REFERENCES `pmdb_0.3.12`.`countries`(`iso_3166_1`) ON DELETE CASCADE ON UPDATE CASCADE;

# 1215 - Fremdschlüsselbedingung kann nicht hinzugefügt werden

asierend auf einigen Recherchen und Tests bin ich zu dem Schluss gekommen, dassCHAR (Dasproduction_x_country.country Feld)ist kein gültiger Fremdschlüsselfeldtyp - obwohl ich keinen Hinweis auf diese Annahme in den MySQL-Dokumenten gefunden habe. Wenn ich den Spaltentyp in einen anderen Zeichentyp wie @ ändeVARCHAR funktioniert die Prozedur.

eine ähnliche Frage wurde hier "gelöst", aber die verknüpfte Antwort ging es nicht um das Typproblem aber darüber, dass ein Ländercode ein Primärschlüssel ist (was für mich vollkommen sinnvoll ist):https: //stackoverflow.com/a/1419235/430273

Tabellenbeschreibungen:

CREATE TABLE IF NOT EXISTS `countries` (
  `iso_3166_1` char(3) NOT NULL,  <----- primary key to be referenced to
  `name` varchar(200) NOT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

ALTER TABLE `countries` ADD PRIMARY KEY (`iso_3166_1`);



CREATE TABLE IF NOT EXISTS `production_x_country` (
  `production` int(11) NOT NULL,
  `country` char(3) CHARACTER SET utf8 NOT NULL   <----- column that should hold the foreign key
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_bin;

Gibt es eine Lösung (ja, ich könnte weiterhin varchar verwenden, aber das ist für mich nicht zufriedenstellend)? und am wichtigsten: gibt es eine Erklärung?

Danke für deine Hilfe

gelöst - siehe meine eigene Antwort unten

Antworten auf die Frage(2)

Ihre Antwort auf die Frage