Alterar a tabela do MySQL para adicionar restrição de chave estrangeira leva a erros

Questão:

Por que estou recebendo erros ao tentar alterar uma tabela com uma restrição de chave estrangeira?

Detalhes:

Eu tenho 1 mesa,HSTORY que eu uso como uma tabela base para todas as outras tabelas de histórico específicas (ie.USER_HISTORY, BROWSER_HISTORY, PICTURE_HISTORY...) Eu também incluí oPICTURE eUSER tabelas como eles são chamados também.

Tabela HISTÓRICO:

<code>CREATE TABLE IF NOT EXISTS HISTORY
(
   ID        INT NOT NULL AUTO_INCREMENT,
   VIEWERID  INT NOT NULL ,
   VIEWDATE  TIMESTAMP NOT NULL DEFAULT NOW(),

   PRIMARY KEY (ID),
   FOREIGN KEY (VIEWERID) REFERENCES USER(ID)
)
engine=innodb;
</code>

Tabela USER: (caso alguém esteja curioso)

<code>CREATE TABLE IF NOT EXISTS USER
(
   ID        INT NOT NULL AUTO_INCREMENT,

   PRIMARY KEY (ID)
)
engine=innodb;
</code>

Tabela PICTURE: (caso alguém esteja curioso)

<code>CREATE TABLE IF NOT EXISTS PICTURE
(
   ID        INT NOT NULL AUTO_INCREMENT,

   PRIMARY KEY (ID)
)
engine=innodb;
</code>

Tabela PICTURE_HISTORY:

<code>CREATE TABLE IF NOT EXISTS PICTURE_HISTORY LIKE HISTORY;

ALTER TABLE PICTURE_HISTORY
ADD FOREIGN KEY (FOREIGNID) REFERENCES PICTURE(ID);
</code>

No entanto, quando faço isso, recebo:

<code>Key column 'FOREIGNID' doesn't exist in table
</code>

Eu levo isso para significar que eu tenho que criar primeiroFOREIGNID, mas em muitos dos exemplos em SO, o acima deve funcionar. Alguém sabe por que isso está ocorrendo?

questionAnswers(2)

yourAnswerToTheQuestion