Foro de elhacker.net

Programación => Bases de Datos => Mensaje iniciado por: Graphixx en 26 Agosto 2014, 22:38 pm



Título: [AYUDA] dbforge error creando relaciones en la base de datos, sale: (errno: 150)
Publicado por: Graphixx en 26 Agosto 2014, 22:38 pm
Error on rename of'.\alertamedica\#sql-446c_3e' to '.\alertamedica\usuarios' (errno: 150)
(http://imagizer.imageshack.us/v2/280x200q90/540/nrgjsj.png) (https://imageshack.com/i/f0nrgjsjp)

Codigo SQL de la BD:
Tabla principal:
Código
  1. CREATE TABLE alertamedica.usuarios (
  2.  id INT(11) DEFAULT NULL,
  3.  cedula VARCHAR(30) DEFAULT NULL,
  4.  codigo VARCHAR(30) DEFAULT NULL,
  5.  email VARCHAR(200) DEFAULT NULL,
  6.  CONSTRAINT FK_usuarios_alergias_cedula FOREIGN KEY (cedula)
  7.    REFERENCES alertamedica.alergias(cedula) ON DELETE NO ACTION ON UPDATE NO ACTION,
  8.  CONSTRAINT FK_usuarios_avisar_cedula FOREIGN KEY (cedula)
  9.    REFERENCES alertamedica.avisar(cedula) ON DELETE NO ACTION ON UPDATE NO ACTION,
  10.  CONSTRAINT FK_usuarios_datos_personales_cedula FOREIGN KEY (cedula)
  11.    REFERENCES alertamedica.datos_personales(cedula) ON DELETE NO ACTION ON UPDATE NO ACTION
  12. )
  13. ENGINE = INNODB
  14. CHARACTER SET latin1
  15. COLLATE latin1_swedish_ci;
  16.  

Tabla secundaria correctamente relacionada:
Código
  1. CREATE TABLE alertamedica.alergias (
  2.  id INT(11) DEFAULT NULL,
  3.  cedula VARCHAR(30) DEFAULT NULL,
  4.  descripcion VARCHAR(1000) DEFAULT NULL,
  5.  UNIQUE INDEX UK_alergias_cedula (cedula)
  6. )
  7. ENGINE = INNODB
  8. CHARACTER SET latin1
  9. COLLATE latin1_swedish_ci;
  10.  

Tabla que quiero relacionar por campo cedula, igual que alergias a usuarios
Código
  1. CREATE TABLE alertamedica.condiciones_medicas (
  2.  id INT(11) DEFAULT NULL,
  3.  cedula VARCHAR(30) DEFAULT NULL,
  4.  enfermedades TEXT DEFAULT NULL,
  5.  analisis_azucar_sang CHAR(5) DEFAULT NULL,
  6.  analisis_colesterol_sangre TEXT DEFAULT NULL,
  7.  vacunas TEXT DEFAULT NULL,
  8.  alergias TEXT DEFAULT NULL,
  9.  prob_circ_sanguinea TEXT DEFAULT NULL,
  10.  UNIQUE INDEX UK_condiciones_medicas_cedula (cedula)
  11. )
  12. ENGINE = INNODB
  13. CHARACTER SET latin1
  14. COLLATE latin1_swedish_ci;
  15.  

Alguna idea de por que sale ese error, me dejo relacionar 3 tablas secundarias y empezo a sacar ese error 150.


Título: Re: [AYUDA] dbforge error creando relaciones en la base de datos, sale: (errno: 150)
Publicado por: Graphixx en 26 Agosto 2014, 22:51 pm
Si borro todo y empiezo desde 0 pero a punta de consola, haciendo:
Código
  1. CREATE TABLE usuarios (
  2.  id INT(11) DEFAULT NULL,
  3.  cedula VARCHAR(30) DEFAULT NULL,
  4.  codigo VARCHAR(30) DEFAULT NULL,
  5.  email VARCHAR(200) DEFAULT NULL,
  6.  CONSTRAINT FK_usuarios_alergias_cedula FOREIGN KEY (cedula)
  7.    REFERENCES alertamedica_pruebas.alergias(cedula) ON DELETE NO ACTION ON UPDATE NO ACTION,
  8.  CONSTRAINT FK_usuarios_avisar_cedula FOREIGN KEY (cedula)
  9.    REFERENCES alertamedica_pruebas.avisar(cedula) ON DELETE NO ACTION ON UPDATE NO ACTION,
  10.  CONSTRAINT FK_usuarios_datos_personales_cedula FOREIGN KEY (cedula)
  11.    REFERENCES alertamedica_pruebas.datos_personales(cedula) ON DELETE NO ACTION ON UPDATE NO ACTION,
  12.  CONSTRAINT FK_usuarios_condiciones_medicas_cedula FOREIGN KEY (cedula)
  13.    REFERENCES alertamedica_pruebas.condiciones_medicas(cedula) ON DELETE NO ACTION ON UPDATE NO ACTION
  14. )
  15. ENGINE = INNODB
  16. CHARACTER SET latin1
  17. COLLATE latin1_swedish_ci;
  18.  
El sistema me recibe la relacion, pero por la interfaz grafica del dbforge no  :-(

Y cuando cargo las bases de datos al DBForge vaya que toma la relacion:
(http://imagizer.imageshack.us/v2/280x200q90/906/u8ypVt.png) (https://imageshack.com/i/p6u8ypVtp)
No entiendo por que esta saliendo ese error en el IDE, figuro hacerlo a la vieja escuela, y modelar toda mi DB por consola, increible.

PD: Si alguien conoce algun otro IDE para modelar bases de datos que no sea workbench o dbforge, se le agradece.