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

Donde esta el error?

Estas en el tema de Donde esta el error? en el foro de Mysql en Foros del Web. Hola a todos :) Llevo un buen rato intentando averiguarlo pero no lo encuentro... Alguien me dice porque me da este error al crear la ...
  #1 (permalink)  
Antiguo 13/09/2012, 13:19
Avatar de dryant  
Fecha de Ingreso: agosto-2009
Ubicación: Malaga, Ceuta, España....
Mensajes: 283
Antigüedad: 14 años, 8 meses
Puntos: 10
Donde esta el error?

Hola a todos :)
Llevo un buen rato intentando averiguarlo pero no lo encuentro...
Alguien me dice porque me da este error al crear la base de datos?
Me crea sin problema la base de datos pero me da este error.

El error es el siguiente:
Cita:
You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '1' at line 1
Y el codigo es:

Código PHP:
<?php
//CREAR UNA TABLA DE recetas###############################

//Conexion
include "conexion.php";
$db="recetas";

//Crear tabla en la base de datos recetas
$peticion=mysql_query ("CREATE  TABLE `".$db."`.`recetas3` (  `idReceta` int(100)  NOT  NULL  AUTO_INCREMENT ,
 `tituloReceta` varchar( 200  )  COLLATE utf8_spanish_ci NOT  NULL ,
 `preparacion` text COLLATE utf8_spanish_ci NOT  NULL ,
 PRIMARY  KEY (  `idReceta`  ) ,
 KEY  `tituloReceta` (  `tituloReceta`  )  ) ENGINE  = InnoDB  DEFAULT CHARSET  = utf8 COLLATE  = utf8_spanish_ci;"
);
$creartabla=mysql_query ($peticion);
if (!
$creartabla)
 {
     echo 
"ha habido un error en la creacion de las tablas ".mysql_error() ;
 }
 else
 {echo 
"la tabla se ha creado correctamente";}


?>
Cual es el fallo???
Podria pasar de él ya que me crea sin problema la tabla pero me gustaria saber cual es.

Gracias!
__________________
Tecnología y tutoriales
  #2 (permalink)  
Antiguo 13/09/2012, 13:45
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: Donde esta el error?

Bueno, si lo pones estructuradamente, es muy fácil ver el error:
Código MySQL:
Ver original
  1. CREATE  TABLE `".$db."`.`recetas3` (  
  2.     `idReceta` int(100)  NOT  NULL  AUTO_INCREMENT ,
  3.      `tituloReceta` varchar( 200  )  COLLATE utf8_spanish_ci NOT  NULL ,
  4.     `preparacion` text COLLATE utf8_spanish_ci NOT  NULL ,
  5.      PRIMARY  KEY (  `idReceta`  ) ,
  6.      KEY  `tituloReceta` (  `tituloReceta`  )  
  7. ) ENGINE  = InnoDB  DEFAULT CHARSET  = utf8 COLLATE  = utf8_spanish_ci;

¿Lo puedes ver?

Es fácil, o está al final, o es que la variable no trae el nombre de la base.

Otro error es simple: Es una malísima práctica crear tablas dinámicamente...
La arquitectura de datos, el modelo de datos es fija. No se crean las tablas al tun-tun, cuando parece bonito o "funcional".
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #3 (permalink)  
Antiguo 13/09/2012, 14:00
Avatar de dryant  
Fecha de Ingreso: agosto-2009
Ubicación: Malaga, Ceuta, España....
Mensajes: 283
Antigüedad: 14 años, 8 meses
Puntos: 10
Respuesta: Donde esta el error?

Pues la verdad es que no lo veo..... Llevo un buen rato probando cosas pero nada.

Yo creo que lo que falla es
Cita:
KEY `tituloReceta` ( `tituloReceta` )
ya que está repetido y deberia poner:
Cita:
KEY ( `tituloReceta` )
... pero al ponerlo como en la segunda manera me sigue dando el mismo error

Voy bien encaminado?
__________________
Tecnología y tutoriales
  #4 (permalink)  
Antiguo 13/09/2012, 20:16
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: Donde esta el error?

Pues, no. No hay errores en la sentencia propiamente dicha.
Código MySQL:
Ver original
  1. CREATE TABLE `recetas3` (
  2.   `idReceta` int(11) NOT NULL auto_increment,
  3.   `tituloReceta` varchar(200) collate utf8_spanish_ci NOT NULL,
  4.   `preparacion` text collate utf8_spanish_ci NOT NULL,
  5.   PRIMARY KEY  (`idReceta`),
  6.   KEY `tituloReceta` (`tituloReceta`)
  7. ) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_spanish_ci

El único error es que tienes es una tremenda metedura de pata en el PHP, pero ese es tema de otro foro.
Presta atención con cuidado a la forma en que "creas" la sentencia para luego "ejecutarla", y verás que en realidad estas haciendo cualquier cosa.
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #5 (permalink)  
Antiguo 14/09/2012, 01:19
Avatar de dryant  
Fecha de Ingreso: agosto-2009
Ubicación: Malaga, Ceuta, España....
Mensajes: 283
Antigüedad: 14 años, 8 meses
Puntos: 10
Respuesta: Donde esta el error?

Ok!
Al decirme lo del php he encontrado el error rapidamente!
Me habia obcecado en que el error era de mysql, y no vi mas alla.
Muchas gracias por la ayuda!
__________________
Tecnología y tutoriales

Etiquetas: php, sql, tabla
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 19:26.