Foros del Web » Programación para mayores de 30 ;) » Bases de Datos General » Mysql »

Problema con una sistexis creando base de datos

Estas en el tema de Problema con una sistexis creando base de datos en el foro de Mysql en Foros del Web. Hola miago estoy tratando de aprende como hacer un sistema de noticias pero en el primer paso trato de crear la base de datos y ...
  #1 (permalink)  
Antiguo 09/04/2016, 23:27
 
Fecha de Ingreso: diciembre-2015
Mensajes: 369
Antigüedad: 8 años, 3 meses
Puntos: 4
Problema con una sistexis creando base de datos

Hola miago estoy tratando de aprende como hacer un sistema de noticias pero en el primer paso trato de crear la base de datos y me da un error no se mucho de mysql

este es el problema
Código MySQL:
Ver original
  1. Error
  2. Static analysis:
  3.  
  4. 2 errors were found during analysis.
  5.  
  6. Unexpected beginning of statement. (near "`p`" at position 316)
  7. Unrecognized statement type. (near "varchar" at position 320)
  8. SQL query:
  9.  
  10. CREATE TABLE IF NOT EXISTS `comentarios` ( `Id` mediumint(9) NOT NULL AUTO_INCREMENT, `Id_Comentarios` varchar(40) NOT NULL, `Autor` text NOT NULL, `Comentario` text NOT NULL, `Fecha` varchar(40) NOT NULL, `Ip` varchar(40) NOT NULL, PRIMARY KEY (`Id`) ) CREATE TABLE IF NOT EXISTS `ip` ( `p` varchar(40) NOT NULL DEFAULT '', PRIMARY KEY (`Ip`) ) CREATE TABLE IF NOT EXISTS `noticias` ( `Id` mediumint(9) NOT NULL AUTO_INCREMENT, `Titulo` text NOT NULL, `Contenido` text NOT NULL, `Categoria` varchar(40) NOT NULL, `Fecha` varchar(40) NOT NULL, `Ip` varchar(40) NOT NULL, PRIMARY KEY (`Id`) )
  11.  
  12. MySQL said: Documentation
  13.  
  14. #1064 - You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near 'CREATE TABLE IF NOT EXISTS `ip` (
  15. `p` varchar(40) NOT NULL DEFAULT '',
  16.   PRIM' at line 11

este es el código mysql

Código MySQL:
Ver original
  1. CREATE TABLE IF NOT EXISTS `comentarios` (
  2.   `Id_Comentarios` varchar(40) NOT NULL,
  3.   `Autor` text NOT NULL,
  4.   `Comentario` text NOT NULL,
  5.   `Fecha` varchar(40) NOT NULL,
  6.   `Ip` varchar(40) NOT NULL,
  7.   PRIMARY KEY (`Id`)
  8. )
  9.  
  10. CREATE TABLE IF NOT EXISTS `ip` (
  11.  `p` varchar(40) NOT NULL DEFAULT '',
  12.   PRIMARY KEY (`Ip`)
  13. )
  14.  
  15. CREATE TABLE IF NOT EXISTS `noticias` (
  16.   `Titulo` text NOT NULL,
  17.   `Contenido` text NOT NULL,
  18.   `Categoria` varchar(40) NOT NULL,
  19.   `Fecha` varchar(40) NOT NULL,
  20.   `Ip` varchar(40) NOT NULL,
  21.   PRIMARY KEY (`Id`)
  22. )
  #2 (permalink)  
Antiguo 09/04/2016, 23:53
Avatar de 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, 4 meses
Puntos: 2658
Respuesta: Problema con una sistexis creando base de datos

Tu script no tiene los terminadores de sentencias.
En MySQL, así como otros DBMS todas las sentencias se terminan con un punto y coma (; ).
Siempre.

Por otro lado, la segunda tabla intenta definir una PK sobre una columna que no existe. La única de esa tabla se llama "P", no "IP".

A su vez, los campos de fecha se deben declarar como DATE, DATETIME o TIMESTAMP, y jamás de los jamases como VARCHAR. NUNCA.
El argumento de que "no puedo conseguir guardar la fecha como DD/MM/YYYY", que puede ser que me respondas, es algo que no corresponde a la BBDD. Se resuelve formateando la fecha a la salida con funciones que existen para eso, y se mandan a almacenar en el formato estándar "YYYY-MM-DD", pero NO se usan VARCHAR.
__________________
¿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 06:53
  #3 (permalink)  
Antiguo 10/04/2016, 09:54
 
Fecha de Ingreso: diciembre-2015
Mensajes: 369
Antigüedad: 8 años, 3 meses
Puntos: 4
Respuesta: Problema con una sistexis creando base de datos

la que em da error es la segunda tabla y perdón no le se llama P se lla ip yo le cambie en nombre pero nada pasa, la cuestion es que desde que pongo el codigo mysql en el locahost creando al base de datos y donde dice msql en esa ventana me pone la parte donde esta al P que en realidad le puedo poner cualquier nombre y me aparece una X que dice
  #4 (permalink)  
Antiguo 10/04/2016, 10:21
Avatar de 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, 4 meses
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
  #5 (permalink)  
Antiguo 10/04/2016, 12:08
 
Fecha de Ingreso: diciembre-2015
Mensajes: 369
Antigüedad: 8 años, 3 meses
Puntos: 4
Respuesta: Problema con una sistexis creando base de datos

gnzsoloyo muchisimas gracias solo le faltaba la terminacion ; como siempre muy agradecido de usted
  #6 (permalink)  
Antiguo 10/04/2016, 14:23
Avatar de 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, 4 meses
Puntos: 2658
Respuesta: Problema con una sistexis creando base de datos

Por nada.

Espero que tengas también en cuenta las restantes cosas que te he indicado, asi te evitas la seguidilla de problemas que tendrás asegurados si no las modificas.
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)

Etiquetas: creando, fecha, sql
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 01:41.