Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Bases de datos > MySQL
Registrarse FAQ Miembros Calendario Guía de estilo Buscar Temas de Hoy Marcar Foros Como Leídos

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 14-01-2008
Avatar de jorgegetafe
jorgegetafe jorgegetafe is offline
Miembro
 
Registrado: dic 2006
Posts: 238
Poder: 18
jorgegetafe Va por buen camino
Error script creacion base de datos

Estoy creando el script de una base de datos, cuando importo a mysql me da errores de sintaxis, a ver si me podeis ayudar a corregirlos, gracias:


Código SQL [-]
/*
Created: 13/01/2008
Modified: 14/01/2008
Model: MySQL 5.0
Database: MySQL 5.0
*/
-- Drop tables section ---------------------------------------------------
drop table if exists `PERSONA`;
-- Create tables section -------------------------------------------------
-- Table PERSONA
CREATE TABLE `PERSONA`
(
  `Nombre` Char(20),
  `Apellido1` Char(20),
  `Apellido2` Char(20),
  `DNI` Char(9),
  `FechaNacimiento` Date,
  `Direccion` Char(50),
  `Ciudad` Char(20),
  `Provincia` Char(20) DEFAULT 'Madrid',
  `Movil` Char(9),
  `Fax` Char(10),
  `Correo` Char(40),
  `CorreoTrabajo` Char(40) DEFAULT,
  `TelefonoTrabajo` Char(20),
  `Sexo` Enum('Hombre','Mujer') NOT NULL,
  `NumeroHijos` Enum('0','1','2','3','4','5','6','7','8','9','10') DEFAULT '0',
  `Comentario` Char(200),
  `Apodo` Char(20),
  `PaginaWeb` Char(40),
  `CodigoPostal` Char(5),
  `Pais` Char(20) DEFAULT 'España',
  `Codigo` Char(5) NOT NULL AUTO_INCREMENT,
  `TipoContacto` Enum('Amig@', 'Familiar', 'Trabajo', 'Otro', 'Estudios', 'Cliente', 'Proveedor') NOT NULL,
  `Telefono` Char(10),
  `Telefono2` Char(10),
  `DireccionTrabajo` Char(50),
  `Direccion2` Char(50),
  `NumeroHermanos` Enum('0','1','2','3','4','5','6','7','8','9','10') DEFAULT '0',
  `Movil2` Char(9),
  `Zodiaco` Enum('Aries','Tauro','Géminis','Cáncer','Leo','Virgo','Libra','Escorpio','Sagitario','Capricornio','  Acuario','Piscis')
);
ALTER TABLE `PERSONA` ADD PRIMARY KEY  (`Codigo`);
__________________
Explicate como si fuese tonto, soy nuevo en esto de hacer programas!!!! XD
Responder Con Cita
  #2  
Antiguo 14-01-2008
[maeyanes] maeyanes is offline
Capo de los Capos
 
Registrado: may 2003
Ubicación: Campeche, México
Posts: 2.732
Poder: 23
maeyanes Va por buen camino
Hola...

Te aconsejo algo... para campos de texto que sean variables, usa varchar en lugar de char, esto te puede ahorrar mucho espacio en la base de datos...

En esta línea:

Código SQL [-]
`CorreoTrabajo` Char(40) DEFAULT,

usas DEFAULT pero no especificas cual es el valor.



Saludos...
Responder Con Cita
  #3  
Antiguo 14-01-2008
Avatar de jorgegetafe
jorgegetafe jorgegetafe is offline
Miembro
 
Registrado: dic 2006
Posts: 238
Poder: 18
jorgegetafe Va por buen camino
Muchas gracias por lo de varchar, es muy buena idea y gracias por el error se me había pasado :-(
__________________
Explicate como si fuese tonto, soy nuevo en esto de hacer programas!!!! XD
Responder Con Cita
  #4  
Antiguo 14-01-2008
Avatar de jorgegetafe
jorgegetafe jorgegetafe is offline
Miembro
 
Registrado: dic 2006
Posts: 238
Poder: 18
jorgegetafe Va por buen camino
Estoy cambiando tal y como dices los tipos de datos, utilizo toad data modeler, si elijo varchar al lado sigue apareciendo el campo de longitud, como he puesto varchar que longitud pongo cero?
__________________
Explicate como si fuese tonto, soy nuevo en esto de hacer programas!!!! XD
Responder Con Cita
  #5  
Antiguo 14-01-2008
Avatar de Lepe
[Lepe] Lepe is offline
Miembro Premium
 
Registrado: may 2003
Posts: 7.424
Poder: 28
Lepe Va por buen camino
Debes poner un número que indica la cantidad de caracteres (como máximo) que puede albergar ese campo.

Si ya pensaste en ello y crees que el nombre más largo que puedas almacenar es 20 letras incluidos espacios, varchar(20) será lo correcto.

La dirección, si es del tipo:
"Avda Nuestra Señora del Rosario, nº 11, bloque 3, escalera 4, izquierda" (71 letras) me parece que no te cabe aunque se puede abreviar, habrá direcciones más largas.
La página web si lo veo pequeño con 40, yo pondría 80.

Saludos
__________________
Si usted entendió mi comentario, contácteme y gustosamente,
se lo volveré a explicar hasta que no lo entienda, Gracias.
Responder Con Cita
  #6  
Antiguo 14-01-2008
Avatar de jorgegetafe
jorgegetafe jorgegetafe is offline
Miembro
 
Registrado: dic 2006
Posts: 238
Poder: 18
jorgegetafe Va por buen camino
Sin hacer caso de las longitudes de los campos que los tengo que cambiar, a ver si me podeis decir como subsanar este error, muchas gracias:


Código SQL [-]
 
-- Create tables section -------------------------------------------------
-- Table PERSONA
CREATE TABLE `PERSONA` ( `Nombre` Varchar( 0 ) ,
`Apellido1` Varchar( 0 ) ,
`Apellido2` Varchar( 0 ) ,
`DNI` Char( 9 ) ,
`FechaNacimiento` Date,
`Direccion` Varchar( 0 ) ,
`Ciudad` Varchar( 0 ) ,
`Provincia` Varchar( 0 ) DEFAULT 'Madrid',
`Movil` Char( 9 ) ,
`Fax` Char( 10 ) ,
`Correo` Varchar( 0 ) ,
`CorreoTrabajo` Varchar( 0 ) ,
`TelefonoTrabajo` Char( 20 ) ,
`Sexo` Enum( 'Hombre', 'Mujer' ) NOT NULL ,
`NumeroHijos` Enum( '0', '1', '2', '3', '4', '5', '6', '7', '8', '9', '10' ) DEFAULT 0,
`Comentario` Varchar( 0 ) ,
`Apodo` Varchar( 0 ) ,
`PaginaWeb` Varchar( 0 ) ,
`CodigoPostal` Char( 5 ) ,
`Pais` Varchar( 0 ) DEFAULT 'Espana',
`Codigo` Smallint NOT NULL AUTO_INCREMENT ,
`TipoContacto` Enum( 'Amigo', 'Familiar', 'Trabajo', 'Otro', 'Estudios', 'Cliente', 'Proveedor' ) NOT NULL ,
`Telefono` Char( 10 ) ,
`Telefono2` Char( 10 ) ,
`DireccionTrabajo` Varchar( 0 ) ,
`Direccion2` Varchar( 0 ) ,
`NumeroHermanos` Enum( '0', '1', '2', '3', '4', '5', '6', '7', '8', '9', '10' ) DEFAULT 0,
`Movil2` Char( 9 ) ,
`Zodiaco` Enum( 'Aries', 'Tauro', 'Géminis', 'Cáncer', 'Leo', 'Virgo', 'Libra', 'Escorpio', 'Sagitario', 'Capricornio', 'Acuario', 'Piscis' ) 
);


MySQL ha dicho:
#1075 - Incorrect table definition; there can be only one auto column and it must be defined as a key
__________________
Explicate como si fuese tonto, soy nuevo en esto de hacer programas!!!! XD
Responder Con Cita
  #7  
Antiguo 14-01-2008
[maeyanes] maeyanes is offline
Capo de los Capos
 
Registrado: may 2003
Ubicación: Campeche, México
Posts: 2.732
Poder: 23
maeyanes Va por buen camino
Hola...

El error te dice que el campo que definiste como AUTO_INCREMENT debe ser tu clave primaria, cosa que en tu definición no es así...

Código SQL [-]
`Codigo` Smallint NOT NULL AUTO_INCREMENT ,

Ese campo es el que debería ser tu clave primaria...



Saludos...
Responder Con Cita
  #8  
Antiguo 14-01-2008
Avatar de jorgegetafe
jorgegetafe jorgegetafe is offline
Miembro
 
Registrado: dic 2006
Posts: 238
Poder: 18
jorgegetafe Va por buen camino
Entiendo lo que me dices, pero no veo que ningun campo, aparte de mi clave (Codigo) tenga tambien el autoincremento... ¿Me puedes ayudar?

Gracias

Código SQL [-]
/*
Created: 13/01/2008
Modified: 14/01/2008
Model: MySQL 5.0
Database: MySQL 5.0
*/
-- Drop tables section ---------------------------------------------------
DROP TABLE if exists `PERSONA`;
-- Create tables section -------------------------------------------------
-- Table PERSONA
CREATE TABLE `PERSONA`
(
  `Nombre` Varchar(20),
  `Apellido1` Varchar(20),
  `Apellido2` Varchar(20),
  `DNI` Char(9),
  `FechaNacimiento` Date,
  `Direccion` Varchar(80),
  `Ciudad` Varchar(20),
  `Provincia` Varchar(20) DEFAULT 'Madrid',
  `Movil` Char(9),
  `Fax` Char(10),
  `Correo` Varchar(80),
  `CorreoTrabajo` Varchar(80),
  `TelefonoTrabajo` Char(20),
  `Sexo` Enum('Hombre','Mujer') NOT NULL,
  `NumeroHijos` Enum('0','1','2','3','4','5','6','7','8','9','10') DEFAULT 0,
  `Comentario` Varchar(400),
  `Apodo` Varchar(20),
  `PaginaWeb` Varchar(80),
  `CodigoPostal` Char(5),
  `Pais` Varchar(20) DEFAULT 'Espana',
  `Codigo` Smallint NOT NULL AUTO_INCREMENT,
  `TipoContacto` Enum('Amigo', 'Familiar', 'Trabajo', 'Otro', 'Estudios', 'Cliente', 'Proveedor') NOT NULL,
  `Telefono` Char(10),
  `Telefono2` Char(10),
  `DireccionTrabajo` Varchar(80),
  `Direccion2` Varchar(80),
  `NumeroHermanos` Enum('0','1','2','3','4','5','6','7','8','9','10') DEFAULT 0,
  `Movil2` Char(9),
  `Zodiaco` Enum('Aries','Tauro','Géminis','Cáncer','Leo','Virgo','Libra','Escorpio','Sagitario','Capricornio','  Acuario','Piscis')
);
ALTER TABLE `PERSONA` ADD PRIMARY KEY  (`Codigo`);
__________________
Explicate como si fuese tonto, soy nuevo en esto de hacer programas!!!! XD

Última edición por jorgegetafe fecha: 14-01-2008 a las 21:59:14.
Responder Con Cita
  #9  
Antiguo 15-01-2008
fide fide is offline
Miembro
 
Registrado: oct 2006
Posts: 331
Poder: 18
fide Va por buen camino
Oyeme, por que no quitas todos esos char y pones todo en varchar???
Responder Con Cita
  #10  
Antiguo 15-01-2008
fide fide is offline
Miembro
 
Registrado: oct 2006
Posts: 331
Poder: 18
fide Va por buen camino
Ademas, si tienes duda de como se hace todo eso, pues ve y hazlo manuelmente en MySql, despues dile que te genere las sentencias SQL para dicha tabla y ya esta.
Responder Con Cita
  #11  
Antiguo 15-01-2008
Avatar de jorgegetafe
jorgegetafe jorgegetafe is offline
Miembro
 
Registrado: dic 2006
Posts: 238
Poder: 18
jorgegetafe Va por buen camino
Cita:
Empezado por fide Ver Mensaje
Ademas, si tienes duda de como se hace todo eso, pues ve y hazlo manuelmente en MySql, despues dile que te genere las sentencias SQL para dicha tabla y ya esta.
Los char los dejo porque es un tamaño fijo.

He hecho lo que me has dicho, con el gestor de BBDD lo he puesto a mi gusto, pero como le digo que me gener el codigo correspondiente? no se hacerlo, gracias.
__________________
Explicate como si fuese tonto, soy nuevo en esto de hacer programas!!!! XD
Responder Con Cita
  #12  
Antiguo 15-01-2008
Avatar de Lepe
[Lepe] Lepe is offline
Miembro Premium
 
Registrado: may 2003
Posts: 7.424
Poder: 28
Lepe Va por buen camino
Cita:
Empezado por jorgegetafe Ver Mensaje
Los char los dejo porque es un tamaño fijo.

OK, pero después no vengas con pegas.
Si guardas el nombre: 'Juan Gómez'
y después al leer de la base de datos y al hacer búsquedas
te encuentras que realmente ha guardado :
Código:
 'Juan Gómez                                      '  (con todos 
esos espacios en blanco), no te quejes ;)
Saludos
__________________
Si usted entendió mi comentario, contácteme y gustosamente,
se lo volveré a explicar hasta que no lo entienda, Gracias.
Responder Con Cita
  #13  
Antiguo 15-01-2008
[maeyanes] maeyanes is offline
Capo de los Capos
 
Registrado: may 2003
Ubicación: Campeche, México
Posts: 2.732
Poder: 23
maeyanes Va por buen camino
Hola...

El se refiere a que los que dejó como Char(n) son los campos que sabe van a tener un tamaño fijo... como Telefonos, DNI, etc...

Si te fijas en su último mensaje, verás que los otros campos ya están declarados como Varchar(n).


Saludos...
Responder Con Cita
  #14  
Antiguo 15-01-2008
Avatar de Emilio
*Emilio* Emilio is offline
Capo
 
Registrado: may 2003
Ubicación: Palma de Mallorca
Posts: 2.635
Poder: 10
Emilio Va por buen camino
Prueba con esto...

Código SQL [-]
CREATE TABLE `PERSONA`
(
  `Nombre` Char(20),
  `Apellido1` Char(20),
  `Apellido2` Char(20),
  `DNI` Char(9),
  `FechaNacimiento` Date,
  `Direccion` Char(50),
  `Ciudad` Char(20),
  `Provincia` Char(20) DEFAULT 'Madrid',
  `Movil` Char(9),
  `Fax` Char(10),
  `Correo` Char(40),
  `CorreoTrabajo` Char(40) DEFAULT 'no@tengo.com',
  `TelefonoTrabajo` Char(20),
  `Sexo` Enum('Hombre','Mujer') NOT NULL,
  `NumeroHijos` Enum('0','1','2','3','4','5','6','7','8','9','10') DEFAULT '0',
  `Comentario` Char(200),
  `Apodo` Char(20),
  `PaginaWeb` Char(40),
  `CodigoPostal` Char(5),
  `Pais` Char(20) DEFAULT 'España',
  `Codigo` smallint NOT NULL AUTO_INCREMENT PRIMARY KEY,
  `TipoContacto` Enum('Amig@', 'Familiar', 'Trabajo', 'Otro', 'Estudios', 'Cliente', 'Proveedor') NOT NULL,
  `Telefono` Char(10),
  `Telefono2` Char(10),
  `DireccionTrabajo` Char(50),
  `Direccion2` Char(50),
  `NumeroHermanos` Enum('0','1','2','3','4','5','6','7','8','9','10') DEFAULT '0',
  `Movil2` Char(9),
  `Zodiaco` Enum('Aries','Tauro','Géminis','Cáncer','Leo','Virgo','Libra','Escorpio','Sagitario','Capricornio','  Acuario','Piscis')
);
__________________
Saludos
Emilio
Responder Con Cita
Respuesta


Herramientas Buscar en Tema
Buscar en Tema:

Búsqueda Avanzada
Desplegado

Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
actualización de base de datos desde script dandia28 Conexión con bases de datos 2 21-06-2007 03:01:53
InterBase 6.0.1 Creacion de Base de datos!! Sahira Firebird e Interbase 1 10-08-2006 21:26:37
Creacion de Base de Datos Fita Conexión con bases de datos 7 07-08-2005 04:45:03
Creacion de una base de datos en delphi lroblesco Conexión con bases de datos 1 15-03-2005 11:06:53
Creacion de base de datos ramonibk MS SQL Server 2 05-03-2005 11:09:39


La franja horaria es GMT +2. Ahora son las 11:53:30.


Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi
Copyright 1996-2007 Club Delphi