Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   MySQL (https://www.clubdelphi.com/foros/forumdisplay.php?f=21)
-   -   Error al crear relación con phpMyAdmin (https://www.clubdelphi.com/foros/showthread.php?t=50890)

Josepo 30-11-2007 18:49:14

Error al crear relación con phpMyAdmin
 
Hola a todos. Tengo dos tablas para relacionar con base InnoDB y la gestiono con phpMyAdmin da un error al hacerlo.

Los datos principales de la relación son:

tabla Cliente
cli_id (primaria)

tabla Factura
fra_id (primaria)
fra_idcliente (index)

Entro en la tabla Factura, pico al enlace "Vista de relaciones", aquí tengo opción a relacionar fra_idcliente con cli_id.
En la línea fra_idcliente, indico campo con el que relaciono, aparece como cliente->cli_id, luego ON DELETE marco CASCADE, y en ON DELETE marco NO ACTION. Pulso botón Grabar y aparece un error: No se ha definido el índice (fra_idcliente), cosa que no tiene ni pies ni cabeza, porque el índice si está definido.

He probado de diferentes maneras (volviendo a crear la base entera, jugando con otras opciones) y siempre me da el mismo mensaje, ¿alguien tiene idea de que pasa?, ¿puede que me esté equivocando haciendo servir phpMyAdmin?, ¿me recomendáis algún otro o continuo con él?

Gracias por vuestra atención.

enecumene 30-11-2007 20:12:03

Hola, Mira Talvez exista la posibilidad de que los campos que hay que relacionar deben ser Primary Key y no indices. intentalo cambiando el campo primario de la tabla factura.

Saludos.

Josepo 01-12-2007 16:51:31

Hola enecumene, he probado y da el mismo error.

Por otra parte un campo marcado como primary key tiene que ser único en la tabla (identifica un registro de la tabla entre el resto), y en el caso de fra_idcliente es normal que no sea único, ya que un cliente puede tener muchas facturas.

Voy a bajar DBDesigner y probaré de crear relaciones allí a ver si hay más suerte.

Godzuki 12-07-2011 17:53:37

Espero te sirva esto
 
Saludos, a mi me salia el mismo error. Hay que checar dos cosas:
1. que la tabla sea InnoDB.
2. Que los campos que desees relacionar sean indices (ya sea un primario y un indice normal)

Probablemente el tipo de tabla es MyISAM (no soporta relaciones). Debes cambiar las tablas que desees relacionar a InnoDB (si soporta relaciones).

Para hacer eso, en PHPMyAdmin desde el inicio:
1. Debes dar click en: Bases de datos >> "Nombre_DB"
2. Checar que tus tablas sean InnoDB, en la columna "tipo" debe decir "InnoDB"
Si no son InnoDB:
3. Dar click en el boton "estructura" de dicha tabla (icono de hoja blanca con una mano blanca) junto al nombre de la tabla.
4. Dar click en "Operaciones"
5. Eleir en "motor de almacenamiento" la opcion InnoDB.
6.Dar click en "continuar"

Ahora en la lista de tablas debe salir en la columna "tipo" : InnoDB

Despues de eso debe poderse relacionar los campos.

Nota: en caso de que aun no se pueda, es probable que necesites establecer el campo inicial como "llave primaria" y el otro como "indice"


La franja horaria es GMT +2. Ahora son las 01:48:47.

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