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

Error 150 en MySQL

Estas en el tema de Error 150 en MySQL en el foro de Bases de Datos General en Foros del Web. Resulta que estoy creandouna base de datos y no me deja porque no tengo bien hecha una clave foránea, espero alguien me pueda ayudar Código: ...
  #1 (permalink)  
Antiguo 02/02/2011, 10:39
 
Fecha de Ingreso: octubre-2010
Ubicación: Bucaramanga
Mensajes: 7
Antigüedad: 13 años, 6 meses
Puntos: 0
Exclamación Error 150 en MySQL

Resulta que estoy creandouna base de datos y no me deja porque no tengo bien hecha una clave foránea, espero alguien me pueda ayudar
Código:
CREATE TABLE personas (
 id INT UNSIGNED NOT NULL AUTO_INCREMENT,
  primerNombre VARCHAR(20) NOT NULL,
  segundoNombre VARCHAR(20) NULL,
  primerApellido VARCHAR(20) NOT NULL,
  segundoApellido VARCHAR(20) NULL,
  fechaNacimiento DATE NOT NULL,
  cedula VARCHAR(12) NOT NULL UNIQUE,
  ciudadNacimiento VARCHAR(20) NOT NULL,
  telefono VARCHAR(12) NOT NULL,
  direccion VARCHAR(35) NOT NULL,
  email VARCHAR(55) NOT NULL UNIQUE,
 PRIMARY KEY (id)
)
ENGINE = InnoDB
DEFAULT CHARACTER SET = latin1
COLLATE = latin1_general_cs
COMMENT = 'Personas';

CREATE TABLE usuarios (
 id INT UNSIGNED NOT NULL AUTO_INCREMENT,
  nombreUsuario VARCHAR(20) NOT NULL UNIQUE,
  clave VARCHAR(75) NOT NULL,
  activo ENUM('true','false') NOT NULL,
 id_persona INT NOT NULL,
 PRIMARY KEY (id),
 UNIQUE INDEX (id_persona),  -- tratando de hacer relacion 1 a 1, con INDEX unico
 FOREIGN KEY (id_persona) REFERENCES personas (id)
)
ENGINE = InnoDB
DEFAULT CHARACTER SET = latin1
COLLATE = latin1_general_cs
COMMENT = 'Usuarios';
creo la tabla personas, pero cuando intento hacer la de usuarios, no me deja porque no tengo bien definida la clave foránea.

el error que me aparece es el siguiente

SQL Error (1005): Can't create table '.\delpersonal_sitio\usuarios.frm' (errno: 150) Foreign key constraint is incorrectly formed

no es problema del servidor, porque ya intenté hacerla localmente.

Gracias!!!
  #2 (permalink)  
Antiguo 02/02/2011, 12:34
Avatar de huesos52
Colaborador
 
Fecha de Ingreso: febrero-2009
Ubicación: Manizales - Colombia
Mensajes: 5.980
Antigüedad: 15 años, 2 meses
Puntos: 360
Respuesta: Error 150 en MySQL

El problema está en la foreign key.

Cuando defines en persona el id (al que haces referencia) lo declaras como INT UNSIGNED. En la tabla usuarios solo lo pones como INT. La referencia debe ser coincidente exactamente entre tipos de datos para evitar inconsistencias en los datos.

corrigelo por:
Código MySQL:
Ver original
  1. CREATE TABLE usuarios (
  2.   nombreUsuario VARCHAR(20) NOT NULL UNIQUE,
  3.   clave VARCHAR(75) NOT NULL,
  4.   activo ENUM('true','false') NOT NULL,
  5.  id_persona INT UNSIGNED NOT NULL,
  6.  PRIMARY KEY (id),
  7.  UNIQUE INDEX (id_persona),  -- tratando de hacer relacion 1 a 1, con INDEX unico
  8.  FOREIGN KEY (id_persona) REFERENCES personas (id)
  9. )
  10. DEFAULT CHARACTER SET = latin1
  11. COLLATE = latin1_general_cs
  12. COMMENT = 'Usuarios';

saludos
__________________
Without data, You are another person with an opinion.
W. Edwads Deming
  #3 (permalink)  
Antiguo 09/02/2011, 13:45
 
Fecha de Ingreso: octubre-2010
Ubicación: Bucaramanga
Mensajes: 7
Antigüedad: 13 años, 6 meses
Puntos: 0
Respuesta: Error 150 en MySQL

Gracias, ese era mi problema!!!!

Etiquetas: mysql
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 23:26.