Ver Mensaje Individual
  #6 (permalink)  
Antiguo 19/01/2009, 05:27
Avatar de gnzsoloyo
gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 16 años, 5 meses
Puntos: 2658
Respuesta: ERROR 1005 (HY000): Can't create table (errno: 150)

Bueno, los FK no existen en el motor MyISAM. Son del InnoDB.

Por lo demás, esta estructura si funciona:
Código sql:
Ver original
  1. CREATE TABLE  `notas` (
  2.   `notasID` INT(10) UNSIGNED NOT NULL AUTO_INCREMENT,
  3.   `userID` INT(10) UNSIGNED NOT NULL,
  4.   `posterTime` INT(10) UNSIGNED NOT NULL,
  5.   `posterIP` tinytext NOT NULL,
  6.   `titulo` tinytext NOT NULL,
  7.   `cuerpo` text NOT NULL,
  8.   `tags` VARCHAR(16) DEFAULT NULL,
  9.   `categoria` VARCHAR(16) NOT NULL,
  10.   PRIMARY KEY  (`notasID`),
  11.   KEY `FK_notas_1` (`userID`),
  12.   FOREIGN KEY (`userID`) REFERENCES `usuarios` (`userID`)
  13. ) ENGINE=InnoDB DEFAULT CHARSET=latin1;

Faltaba definir a ese campo como KEY, además de no hay que olvidarse que los campos deben ser del mismo tipo y que si usas un autonumerico, no te conviene un rango de representación inferior al INT.

Un tipo final: Si pones un campo como NOT NULL no tiene sentido que le des un valor DEFAULT, porque jamás lo podrá usar. Esos valores son operativos solamente en los campos NULL (que en este caso no pueden darse).
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)