Pregunta

Estoy tratando de agregar una restricción de clave extranjera a través de SQLYOG y obtener este error, aunque solo soy una fuente y una columna de referencia

Seleccione el mismo número de fuente y referencia

¿Alguien sabe lo que significa en este caso? Tenga en cuenta que tengo un número igual de columnas de origen y referencia ...

¿Fue útil?

Solución

Encontré el mismo problema con SQLYOG V9.01. El mensaje de error es engañoso y la causa real de un error puede ser totalmente diferente.

Las cosas que revisé para resolver esto son las siguientes:

  • Tipos de Ingyne de mesa de verificación debe ser tanto innodb
  • Compruebe si su tabla de destino no es la misma que la fuente.
  • Verifique los tipos de datos, la longitud y la recopilación de charset de campos referenciados.
  • Si ya tiene datos en sus tablas, verifique su consistencia.

Por ejemplo, debe eliminar todos los datos no relacionados de la Tabla B que se relaciona con la Tabla A

 DELETE target FROM B AS target LEFT JOIN A USING(id_A) WHERE A.id_A IS NULL
  • Finalmente, en mi caso, tuve que enjuagar las tablas para crear mis restricciones con éxito.

La creación de restricciones manuales desde la ventana de consulta puede brindarle más información sobre su tipo de error.

Simplemente un recordatorio:

ALTER TABLE `B` ADD CONSTRAINT `FK_B` FOREIGN KEY (`id_A`) REFERENCES `A` (`id_A`) ON DELETE CASCADE ; 

¡Buena suerte!

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top