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

Error Clave Foranea

Estas en el tema de Error Clave Foranea en el foro de Mysql en Foros del Web. Código PHP: ALTER TABLE  ` empleado `      ADD CONSTRAINT  ` idArea `  FOREIGN KEY  (` idArea `)  REFERENCES  ` area ` (` idArea `)  ON UPDATE CASCADE ON DELETE SET NULL ; /* SQL Error (1005): Can't create table 'touche.#sql-f3c_12c' (errno: 150) Foreign key constraint is incorrectly formed */  ...
  #1 (permalink)  
Antiguo 05/07/2012, 22:29
 
Fecha de Ingreso: junio-2012
Mensajes: 77
Antigüedad: 12 años, 5 meses
Puntos: 5
Error Clave Foranea

Código PHP:
ALTER TABLE `empleado`
    
ADD CONSTRAINT `idAreaFOREIGN KEY (`idArea`) REFERENCES `area` (`idArea`) ON UPDATE CASCADE ON DELETE SET NULL;
/* SQL Error (1005): Can't create table 'touche.#sql-f3c_12c' (errno: 150)

Foreign key constraint is incorrectly formed */ 
estoy tratando de crear una clave foranea y eso es lo que me muestra alguna idea de cual es el error.

tabla de empleado:
Código PHP:
CREATE TABLE `empleado` (
    `
idEmpleadoBIGINT(30NOT NULL,
    `
idAreaVARCHAR(3NOT NULL,
    `
idAreaEspVARCHAR(3NOT NULL,
    `
primerNombreVARCHAR(30NOT NULL,
    `
segundoNombreVARCHAR(30NULL DEFAULT NULL,
    `
primerApellidoVARCHAR(30NOT NULL,
    `
segundoApellidoVARCHAR(30NULL DEFAULT NULL,
    `
idCargoVARCHAR(3NOT NULL,
    `
idEmpleadoJefeBIGINT(30NOT NULL
)
COMMENT='Tabla Que Contiene los datos de los empleados (cargo,area,jefe,nombres..)'
COLLATE='utf8_general_ci'
ENGINE=InnoDB
tabla area:
Código PHP:
CREATE TABLE `area` (
    `
idAreaVARCHAR(3NOT NULL,
    `
nombreAreaVARCHAR(255NOT NULL,
    
PRIMARY KEY (`idArea`)
)
COMMENT='Tabla Contenedora de las areas de cada empleado'
COLLATE='utf8_general_ci'
ENGINE=InnoDB

Última edición por andrwyo2006; 05/07/2012 a las 22:37
  #2 (permalink)  
Antiguo 06/07/2012, 01:35
Colaborador
 
Fecha de Ingreso: marzo-2008
Ubicación: Sabadell
Mensajes: 4.897
Antigüedad: 16 años, 8 meses
Puntos: 574
Respuesta: Error Clave Foranea

...ADD CONSTRAINT `idArea` FOREIGN KEY...

eso es el nombre de la FK no puede ser igual al campo... creo.

Intenta

...ADD CONSTRAINT `FK_idArea` FOREIGN KEY...
__________________
Quim
--------------------------------------------------
Ayudar a ayudar es una buena práctica!!! Y da buenos resultados.
  #3 (permalink)  
Antiguo 06/07/2012, 12:03
 
Fecha de Ingreso: junio-2012
Mensajes: 77
Antigüedad: 12 años, 5 meses
Puntos: 5
Respuesta: Error Clave Foranea

no amigo mira...
Código PHP:
ALTER TABLE `empleado`
    
ADD CONSTRAINT `FK_idAreaFOREIGN KEY (`idArea`) REFERENCES `area` (`idArea`) ON UPDATE CASCADE ON DELETE SET NULL;
/* SQL Error (1005): Can't create table 'touche.#sql-340_1' (errno: 150)

Foreign key constraint is incorrectly formed */ 
sigue sacando el error alguna idea?
  #4 (permalink)  
Antiguo 06/07/2012, 12:12
Colaborador
 
Fecha de Ingreso: marzo-2008
Ubicación: Sabadell
Mensajes: 4.897
Antigüedad: 16 años, 8 meses
Puntos: 574
Respuesta: Error Clave Foranea

Asi tiene que funcionar..... es un poco redundante esta sintaxis...

ALTER TABLE `empleado`ADD CONSTRAINT `FK_idArea`
FOREIGN KEY `FK_idArea` (`idArea`)
REFERENCES `area` (`idArea`)
ON UPDATE CASCADE
ON DELETE SET NULL;


Si no solo faltaria agregar el nombre de la bbdd delante de los nombres de la tablas....

`nombreBBDD`.`empleado` y `nombreBBDD`.`area`
__________________
Quim
--------------------------------------------------
Ayudar a ayudar es una buena práctica!!! Y da buenos resultados.
  #5 (permalink)  
Antiguo 06/07/2012, 12:24
 
Fecha de Ingreso: junio-2012
Mensajes: 77
Antigüedad: 12 años, 5 meses
Puntos: 5
Respuesta: Error Clave Foranea

pues parece q no...
Código SQL:
Ver original
  1. ALTER TABLE `empleado`ADD CONSTRAINT `FK_idArea`
  2. FOREIGN KEY `FK_idArea` (`idArea`)
  3. REFERENCES `area` (`idArea`)
  4. ON UPDATE CASCADE
  5. ON DELETE SET NULL;
  6. /* SQL Error (1005): Can't create table 'touche.#sql-340_1' (errno: 150)
  7.  
  8. Foreign key constraint is incorrectly formed */
  9. /* 0 rows affected, 0 rows found. Duration for 0 of 1 query: 0,000 sec. */

Código SQL:
Ver original
  1. ALTER TABLE `touche`.`empleado`ADD CONSTRAINT `FK_idArea`
  2. FOREIGN KEY `FK_idArea` (`idArea`)
  3. REFERENCES `touche`.`area` (`idArea`)
  4. ON UPDATE CASCADE
  5. ON DELETE SET NULL;
  6. /* SQL Error (1005): Can't create table 'touche.#sql-340_1' (errno: 150)
  7.  
  8. Foreign key constraint is incorrectly formed */
  9. /* 0 rows affected, 0 rows found. Duration for 0 of 1 query: 0,000 sec. */
  #6 (permalink)  
Antiguo 06/07/2012, 12:32
Colaborador
 
Fecha de Ingreso: marzo-2008
Ubicación: Sabadell
Mensajes: 4.897
Antigüedad: 16 años, 8 meses
Puntos: 574
Respuesta: Error Clave Foranea

Luego el error lo tienes en las tablas, por que esta mañana te he contestado de memoria, pero ahora he usado las GUI tools para que me construyera la sintaxis y es esa....

Busca por error 150, no será que tienes valores que no cumplen la restrición que intentas crear....

Aqui hay un poco de literatura sobre ese error

http://forums.mysql.com/read.php?22,19755,19755
__________________
Quim
--------------------------------------------------
Ayudar a ayudar es una buena práctica!!! Y da buenos resultados.

Etiquetas: clave, sql, foreignkey
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 09:33.