Clave externa en MySQL: ERROR 1005

Estoy un poco confundido acerca de agregar keys externas en MySQL

Lo que trato de hacer es hacer reference a la key primaria de Estudiantes con:

CREATE TABLE Enrolled(sid CHAR(20), cid CHAR(20), grade CHAR(2), PRIMARY KEY (sid, cid), FOREIGN KEY (sid) REFERENCES Students); 

Sin embargo, lo que obtengo es

 ERROR 1005 (HY000): Can't create table 'test_db.Enrolled' (errno: 150) 

Busqué y encontré

MySQL "ERROR 1005 (HY000): No se puede crear la tabla 'foo. # Sql-12c_4' (errno: 150)"

Sin embargo, mi tabla Estudiantes ya tiene una key principal, así que esto no debería ser un problema:

 | Students | CREATE TABLE Students ( sid char(20) NOT NULL DEFAULT '', name char(20) DEFAULT NULL, login char(10) DEFAULT NULL, age int(11) DEFAULT NULL, gpa float DEFAULT NULL, PRIMARY KEY (sid) ) ENGINE=InnoDB DEFAULT CHARSET=latin1 | 

Siento que me falta algo bastante básico, pero parece que no lo veo. ¿Algún consejo?

Debe agregar el nombre de columna referencedo después de la tabla a la que se hace reference. REFERENCES Students(sid) . Entonces debes cambiar tu código a la siguiente solución

 CREATE TABLE Enrolled ( sid CHAR(20), cid CHAR(20), grade CHAR(2), PRIMARY KEY (sid, cid), FOREIGN KEY (sid) REFERENCES Students(sid) ); 

¿Qué hay de hacer que la columna referenceda sea explícita? Algo como:

 CREATE TABLE Enrolled( sid CHAR(20), cid CHAR(20), grade CHAR(2), PRIMARY KEY (sid, cid), FOREIGN KEY (sid) REFERENCES Students (sid) ); 

Mire la FOREIGN KEY (sid) REFERENCES Students (sid) , última línea. También tenga en count que si la key externa es una sola columna, puede especificarla justo después del tipo de columna:

 CREATE TABLE Enrolled( sid CHAR(20) REFERENCES Students (sid), ...