Ir al contenido


Foto

Consulta acerca Mysql :(


  • Por favor identifícate para responder
2 respuestas en este tema

#1 yisus

yisus

    Newbie

  • Miembros
  • Pip
  • 5 mensajes

Escrito 09 septiembre 2013 - 11:44

Primero que nada saludos a todos  =)

Ando creando una bd en mysql pero a la hora de hacer los Fk me tira problemas cuando voy hacer la importacion a php my admin aqui les dejo el codigo para que vea, no entiendo por que pasa esto si la sintaxis es la correcta =/ espero puedan ayudarme ante todo gracias de una buena vez :)
Les Explico  Tengo mis 2 tablas horarios y medicos  , yo quiero referenciar el codigo _horario_medico de la tabla medicos al pk de la tabla t_horarios codigo_horario_mediico, pero al intentar importar mi bd a php myadmind me tira un error se los muestro abajo

tabla horarios

CREATE TABLE IF NOT EXISTS `t_horarios` (
  `codigo_horario` bigint(20) NOT NULL AUTO_INCREMENT,
  `hora_inicio` varchar(10) CHARACTER SET utf8 COLLATE utf8_spanish_ci DEFAULT NULL,
  `hora_fin` varchar(10) CHARACTER SET utf8 COLLATE utf8_spanish_ci DEFAULT NULL,
  `codigo_dia` int(11) DEFAULT NULL,
  `codigo_horario_medico` int(11) DEFAULT NULL,
  PRIMARY KEY (`codigo_horario`,`codigo_horario_medico`),
  FOREIGN KEY (codigo_dia) REFERENCES t_dia(codigo_dia)
) ENGINE=InnoDB  DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci AUTO_INCREMENT=1 ;

tabla medicos

CREATE TABLE IF NOT EXISTS `t_medicos` (
  `codigo_medico` bigint(20) NOT NULL AUTO_INCREMENT,
  `codigo_especialidad` int(11) DEFAULT NULL,
  `codigo_horario_medico` int(11) DEFAULT NULL,
  `ci_medico` int(11) DEFAULT NULL,
  `nombres_medico` varchar(150) CHARACTER SET utf8 COLLATE utf8_spanish_ci DEFAULT NULL,
  `apellidos_medico` varchar(150) CHARACTER SET utf8 COLLATE utf8_spanish_ci DEFAULT NULL,
  `direccion_medico` varchar(150) COLLATE utf8_unicode_ci DEFAULT NULL,
  `telefono_medico` varchar(20) CHARACTER SET utf8 COLLATE utf8_spanish_ci DEFAULT NULL,
  PRIMARY KEY (`codigo_medico`),
  FOREIGN KEY (codigo_horario_medico) REFERENCES t_horarios(codigo_horario_medico)
 
) ENGINE=InnoDB  DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci AUTO_INCREMENT=2 ;

El ERROR QUE ME TIRA =/  ESPERO SU AYUDA CHICOS :

Error
consulta SQL:

-- --------------------------------------------------------
--
-- Estructura de tabla para la tabla `t_medicos`
--

CREATE TABLE IF NOT EXISTS  `t_medicos` (

`codigo_medico` BIGINT( 20 ) NOT NULL AUTO_INCREMENT ,
`codigo_especialidad` INT( 11 ) DEFAULT NULL ,
`codigo_horario_medico` INT( 11 ) DEFAULT NULL ,
`ci_medico` INT( 11 ) DEFAULT NULL ,
`nombres_medico` VARCHAR( 150 ) CHARACTER SET utf8 COLLATE utf8_spanish_ci DEFAULT NULL ,
`apellidos_medico` VARCHAR( 150 ) CHARACTER SET utf8 COLLATE utf8_spanish_ci DEFAULT NULL ,
`direccion_medico` VARCHAR( 150 ) COLLATE utf8_unicode_ci DEFAULT NULL ,
`telefono_medico` VARCHAR( 20 ) CHARACTER SET utf8 COLLATE utf8_spanish_ci DEFAULT NULL ,
PRIMARY KEY (  `codigo_medico` ) ,
FOREIGN KEY ( codigo_horario_medico ) REFERENCES t_horarios( codigo_horario_medico )
) ENGINE = INNODB DEFAULT CHARSET = utf8 COLLATE = utf8_unicode_ci AUTO_INCREMENT =2;

MySQL ha dicho: Documentación

#1215 - Cannot add foreign key constraint

Espero alguno tenga idea y me pueda ayudar se los agradezco ya de ante mano =D
  • 0

#2 poliburro

poliburro

    Advanced Member

  • Administrador
  • 4.945 mensajes
  • LocationMéxico

Escrito 11 septiembre 2013 - 08:04

Me parece que estas intentando crear primero médicos y eso es erróneo. Se debe crear primero Horarios para que medicos pueda crear la llave referenciada.

saludos
  • 0

#3 yisus

yisus

    Newbie

  • Miembros
  • Pip
  • 5 mensajes

Escrito 11 septiembre 2013 - 03:37

No amigo no era eso =/ pero igual gracias por la ayuda al final , investigue y al parecer no puedo usar 2 pk y luego hacerle referencia a una xD osea solo tengo que tener un pk
  • 0




IP.Board spam blocked by CleanTalk.