Por un lado, es cierto que no te conviene usar campo autoincrement como parte de una PK, como bien te dice Huesos52, porque eso puede dar lugar a ingresar en el resto de los campos valores repetidos, ya que una parte de la clave (el auto_increment) siempre variará, con lo que se cumplirá la restricción, sin por ello evitar la duplicidad de registros.
¿Se entiende la idea?
Eso sería, en ese caso valido:
Código MySQL:
Ver original
+-----+-----+
| UNO | DOS |
+-----+-----+
| 1 | ABC |
| 2 | ABC |
| 3 | ABC |
| 4 | ABB |
| 5 | ABB |
+-----+-----+
Como podrás ver, la tabla tiene definida una PK de dos campos, uno de los cuales es un auto_increment; esto es perfectamente válido. Pero eso no evita que el segundo campo se repita...
Por otro lado, es muy posible que el error de generación de la tabla se deba a otras cosas:
1) Las tablas referidas como FK se deben crear antes de cualquier tabla dependiente.
2) TYPE es una cláusula obsoleta. Corresponde usar ENGINE.
3) Los tipos de datos deben ser iguales en tipo y rango entre FK y PK referida, y si son de caracteres, deben ser del mismo CHARSET.
4) Las FK deben ser exactamente iguales en
cantidad de columnas y tipos de datos a las PK. No puedes definir, como lo haces, una FK apuntando a un sólo dato de otra tabla (produce->control), y luego pretender modificar la PK de esa tabla (control),
porque viola la relación dada.
Así pues, por lo menos verifica que la tabla "persona" sea creada antes que "control", y "control" antes de "produce".
Más o menos por allí hay que empezar.