Adicionando chave estrangeira do tipo char no mysql

Eu tenho um problema ao adicionar uma chave estrangeira no mysql (usando 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 - Não é possível adicionar restrição de chave estrangeira

com base em algumas pesquisas e testes, cheguei à conclusão de queCHAR (esteproduction_x_country.country campo)não é um tipo de campo de chave estrangeira válido - embora eu não tenha encontrado nenhuma dica para essa suposição nos documentos do mysql. se eu mudar o tipo de coluna para algum outro tipo de caractere comoVARCHAR, o procedimento funciona.

uma pergunta semelhante foi "resolvida" aqui, mas essa resposta vinculadanão era sobre o problema de tipo mas sobre um código de país ser uma chave primária (o que faz todo sentido para mim):https://stackoverflow.com/a/1419235/4302731

descrições da tabela:

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;

existe alguma solução (sim, eu poderia continuar usando o varchar, mas isso não é satisfatório para mim)? e mais importante:existe alguma explicação?

obrigado pela ajuda!

resolvido - veja minha própria resposta abaixo

questionAnswers(1)

yourAnswerToTheQuestion