He usado herramientas como MySQL Migration Toolkit (*) y Bullzip’s Access To MySQL, ambos hacen un excelente trabajo pero no exporta las relaciones entre tablas. Hacer esta tarea nos puede tomar varias horas (hasta ahora):
Escribí un código VBA para identificar las relaciones generando código MySQL con las sentencias de creación, esto puede ser muy útil después de la migración usando cualquier herramienta libre.
Option Explicit
'Copiar y pegar esta función en un módulo nuevo/existente de MS Access.
Public Sub printRelations()
Dim sql, fk As String
Dim i, j As Integer
For i = 0 To CurrentDb.Relations.Count - 1
sql = "ALTER TABLE `" & CurrentDb.Relations(i).ForeignTable & _
"` ADD CONSTRAINT `" & CurrentDb.Relations(i).Name & "` FOREIGN KEY ("
fk = "("
For j = 0 To CurrentDb.Relations(i).Fields.Count - 1
sql = sql & "`" & CurrentDb.Relations(i).Fields(j).ForeignName & "` ,"
fk = fk & "`" & CurrentDb.Relations(i).Fields(j).Name & "` ,"
Next j
sql = Left(sql, Len(sql) - 1)
fk = Left(fk, Len(fk) - 1)
fk = fk & ")"
sql = sql & ") REFERENCES `" & CurrentDb.Relations(i).Table & "`" & fk & ";"
Debug.Print sql
Next i
End Sub
Para ejecutar el código anterior, debemos invocarlo desde la ventana de Inmediato (Ctrl+G), luego solo tendremos que copiar el SQL generado para llevarlo a MySQL.
Enjoy!
(*)MySQL Migration Toolkit esta descontinuado pero aun sigue disponible desde los servidores Mirror de MysQL como:
http://mirrors.dotsrc.org/mysql/Downloads/MySQLGUITools/
ALTER TABLE `Clientes` ADD CONSTRAINT `[D:\bd\pagina\base de datos ba_v1_be.accdb].cel1Clientes` FOREIGN KEY (`cel1_id` ) REFERENCES `cel1`(`cel1_id` );
MySQL ha dicho: Documentación
#1215 – Impossible d’ajouter des contraintes d’index externe
como arreglo este error, ayudame por favor
Hola Andres
Podrías corregir la referencia de éste modo:
ALTER TABLE `Clientes` ADD CONSTRAINT `cel1Clientes` FOREIGN KEY (`cel1_id` ) REFERENCES `cel1`(`cel1_id` );
Al parecer `cel1Clientes` esta en otra base de datos , por eso se ve: [D:\bd\pagina\base de datos ba_v1_be.accdb]
Saludos