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

[SOLUCIONADO] Error de sintaxis, no lo encuentro para solucionarlo #1064

Estas en el tema de Error de sintaxis, no lo encuentro para solucionarlo #1064 en el foro de Mysql en Foros del Web. Como estan? Estoy intentando cargar esto en la base de datos @import url("http://static.forosdelweb.com/clientscript/vbulletin_css/geshi.css"); Código MySQL: Ver original CREATE TABLE tipolocal ( ID int ( 2 ...
  #1 (permalink)  
Antiguo 30/06/2013, 08:09
 
Fecha de Ingreso: octubre-2008
Mensajes: 85
Antigüedad: 15 años, 6 meses
Puntos: 0
Error de sintaxis, no lo encuentro para solucionarlo #1064

Como estan?

Estoy intentando cargar esto en la base de datos

Código MySQL:
Ver original
  1. CREATE TABLE tipolocal(
  2. descripción varchar(20) NOT NULL,
  3. )
  4.  
  5. CREATE TABLE locales(
  6. usuario varchar(20) NOT NULL,
  7. nombre varchar(30) NOT NULL,
  8. telefono varchar(15) NOT NULL,
  9. dirección varchar(40),
  10. localidad varchar(20),
  11. ciudad varchar(20),
  12. provincia varchar(20),
  13. cp varchar(7),
  14. mail varchar(40),
  15. tipo int(2) NOT NULL,
  16. categoría int(1) NOT NULL,
  17. puntos int(5) DEFAULT '0' NOT NULL,
  18. saldo DECIMAL(7,2)
  19. FOREIGN KEY (tipo) REFERENCES tipolocal(ID)
  20. )

Pero cuando lo intento hacer me da el siguiente error
Cita:
#1064 - 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 'CREATE TABLE locales( ID int(4) unsigned NOT NULL auto_increment, usuario varc' at line 7
No logro ver donde tengo el error, alguna ayuda?

gracias!

Última edición por matiD; 30/06/2013 a las 08:21
  #2 (permalink)  
Antiguo 30/06/2013, 08: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, 5 meses
Puntos: 2658
Respuesta: Error de sintaxis, no lo encuentro para solucionarlo #1064

Dos errores:
1) Si ambas sentencias se ejecutan en un mismo script, cada una debe terminar en punto y coma.
2) Te faltaron separar con comas las clausulas de PRIMARY KEY y FOREIGN KEY.

Agregaría que no te recomiendo usar palabras reservadas como "password" como nombres de campos, porque luego tendrás problemas de sintaxis indetectables a causa de eso.
Código MySQL:
Ver original
  1. CREATE TABLE tipolocal(
  2. descripción VARCHAR(20) NOT NULL,
  3. );
  4.  
  5. CREATE TABLE locales(
  6. usuario VARCHAR(20) NOT NULL,
  7. nombre VARCHAR(30) NOT NULL,
  8. telefono VARCHAR(15) NOT NULL,
  9. dirección VARCHAR(40),
  10. localidad VARCHAR(20),
  11. ciudad VARCHAR(20),
  12. provincia VARCHAR(20),
  13. cp VARCHAR(7),
  14. mail VARCHAR(40),
  15. tipo INT(2) NOT NULL,
  16. categoría INT(1) NOT NULL,
  17. puntos INT(5) DEFAULT '0' NOT NULL,
  18. saldo DECIMAL(7,2),
  19. FOREIGN KEY (tipo) REFERENCES tipolocal(ID)
  20. );

PD: Tampoco recomiendo usar nombres de campos como "ID", en cada tabla, porque eso puede causarte complicaciones en posteriores consultas, si no se administran correctamente. Es mejor darles un prefijo que indique la tabla de pertenencia:
"locales_id"
"usuario_id",
DE ese modo, además, puedes conservar ese mismo nombre en los casos en que se use como FK, facilitando la construcción de las consultas.
__________________
¿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 30/06/2013, 08:47
 
Fecha de Ingreso: octubre-2008
Mensajes: 85
Antigüedad: 15 años, 6 meses
Puntos: 0
Respuesta: Error de sintaxis, no lo encuentro para solucionarlo #1064

Ahora mismo lo estoy modificando, estoy cambiando todos los password por clave, y poniendo los punto y coma.

En 2 minutos te comento que tal!

Gracias!

EDIT:
Parece se se soluciono la sintaxis pero ahora surge un error interno...

este es el error
Cita:
#1005 - Can't create table 'bdgamestore.locales' (errno: 150) (Detalles...)
y cuando entras en detalles dice lo siguiente
Cita:
InnoDB

Supports transactions, row-level locking, and foreign keys

Última edición por matiD; 30/06/2013 a las 08:52
  #4 (permalink)  
Antiguo 30/06/2013, 16:43
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, 5 meses
Puntos: 2658
Respuesta: Error de sintaxis, no lo encuentro para solucionarlo #1064

Cita:
#1005 - Can't create table 'bdgamestore.locales' (errno: 150) (Detalles...)
Esto implica que hay alguna restricción que se está violando, y tienes que comenzar siempre verificando la relación de FK, junto con los nombres de las constraint, si se indicaron manualmente.
Ahora bien, una regla fundamental e inviolable de una FK es que todo campo FK debe ser siempre:
- Del mismo tipo de columna que la PK referida.
- Si es numérica, debe ser del mismo rango (con signo o sin signo, y del mismo tamaño).
- Si es de caracteres, debe ser de la misma collation, charset y longitud.
- Si es de fecha, de la misma longitud.
En tu caso, estás definiendo el tipo como INT UNSIGNED en la PK de origen, y como INT con signo en la segunda. Y antes que me lo digas, no, el "(1)" no representa la longitud de las cifras a almacenar. Es una restricción que se usa para otras cosas y no afecta el rango de representación de un número.
Los rangos de un INT con o sin signo los puedes ver el el manual de referencia: http://dev.mysql.com/doc/refman/5.0/...umn-types.html
__________________
¿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; 30/06/2013 a las 17:33
  #5 (permalink)  
Antiguo 30/06/2013, 17:18
 
Fecha de Ingreso: octubre-2008
Mensajes: 85
Antigüedad: 15 años, 6 meses
Puntos: 0
Respuesta: Error de sintaxis, no lo encuentro para solucionarlo #1064

Perfecto!!! totalmente entendido por el momento ese error ya está solucionado.

Por otro lado ahora lo que haré será eliminar todos los atributos que yo suponia era la longitud del int y cambiar los ID por id_tabla, y también reparar los atributos como unsigned en todos los campos que lo necesiten para uqe sean identicos al primary key que quiero relacionar.

Gracias la verdad un genio!!!

Etiquetas: encuentro, sintaxis, 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 08:42.