Ver Mensaje Individual
  #4 (permalink)  
Antiguo 10/04/2016, 10:21
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: 17 años
Puntos: 2658
Respuesta: Problema con una sistexis creando base de datos

Wilson: ¿Leíste ALGO de lo que te puse?

En serio, parece que no lo hubieras hecho...

1) Toda query debe terminar en punto y coma. TODAS, y ese script que intentas ejecutar no los tiene, por lo que MySQL no puede saber en donde termina y CREATE TABLE y comienza el otro, por lo que intenta ejecutar ambos en una sola linea, como puedes apreciar si revisas con cuidado el error:
Código MySQL:
Ver original
  1. CREATE TABLE IF NOT EXISTS `comentarios` ( `Id` mediumint(9) NOT NULL AUTO_INCREMENT,
  2. `Id_Comentarios` varchar(40) NOT NULL, `Autor` text NOT NULL, `Comentario` text NOT NULL,
  3. `Fecha` varchar(40) NOT NULL, `Ip` varchar(40) NOT NULL, PRIMARY KEY (`Id`) ) CREATE TABLE
  4.  IF NOT EXISTS `ip` ( `p` varchar(40) NOT NULL DEFAULT '', PRIMARY KEY (`Ip`) ) CREATE TABLE
  5.  IF NOT EXISTS `noticias` ( `Id` mediumint(9) NOT NULL AUTO_INCREMENT, `Titulo` text NOT
  6. NULL, `Contenido` text NOT NULL, `Categoria` varchar(40) NOT NULL, `Fecha` varchar(40) NOT
  7.  NULL, `Ip` varchar(40) NOT NULL, PRIMARY KEY (`Id`) )

Como puedes ver, están los tres CREATE en una misma ejecución, lo que quiere decir que no te has molestado en poner los terminadores de cada uno para que MySQL sepa lo que tiene que ejecutar.

¿Ahora se entiende?

2) Las fechas son SIEMPRE un tipo de dato específico, que ya te indiqué. Además hay varios tipos de columna que son incorrectos para el uso que se les quiere dar:
Código MySQL:
Ver original
  1. CREATE TABLE IF NOT EXISTS `comentarios` (
  2.    `Id_Comentarios`INT UNSIGNED NOT NULL,
  3.   `Autor` text NOT NULL,
  4.   `Comentario` text NOT NULL,
  5.   `Fecha` DATE NOT NULL,
  6.   `Ip` varchar(40) NOT NULL,
  7.   PRIMARY KEY (`Id_Comentarios`)
  8. );
  9.  
  10. CREATE TABLE IF NOT EXISTS `ip` (
  11.  `Ip` varchar(40) NOT NULL DEFAULT '',
  12.   PRIMARY KEY (`Ip`)
  13. );
  14.  
  15. CREATE TABLE IF NOT EXISTS `noticias` (
  16.   `Titulo` VARCHAR(200) NOT NULL,
  17.   `Contenido` text NOT NULL,
  18.   `Categoria` varchar(40) NOT NULL,
  19.   `Fecha` DATE NOT NULL,
  20.   `Ip` varchar(40) NOT NULL,
  21.   PRIMARY KEY (`Id`)
  22. );

Finalmente, no queda claro el uso de una columna "IP", que se replica en diversas tablas innecesariamente, y no parece relacionada con el usuario que realiza el comentario o bien la noticia.
Da la impresión de falta de análisis de requerimiento de datos.
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)

Última edición por gnzsoloyo; 10/04/2016 a las 10:44