Resuelve el error ORM de Doctrine con tablas sin clave principal en MySQL al mapear la base de datos.

Symfony 3.4

En el proyecto trabajo con una base de datos y además tengo que conectar con otras dos bases de datos.

Con lo que el config.yml lo tengo de la siguiente manera:

 

Y definidos los parámetros de conexión en parameters.yml

 

Doctrine, tablas sin clave principal en MySQL

Table ____ has no primary key. Doctrine does not support reverse engineering from tables that don’t have a primary key.

Asi que Doctrine no puede funcionar en tablas que no tienen clave principal. En MySQL, crear tablas sin PK siempre es una mala idea, pero, en algunos casos (o sistemas heredados) que no tienen PK en algunas tablas, aún puede usar Doctrine como ORM.

Sin embargo, de forma predeterminada (y creo que esto no cambiará) si su base de datos tiene tablas sin asignación de clave primaria simplemente no funcionará = /.

La forma más rápida de resolver esto es anular la clase de proveedor DatabaseDriver, en el espacio de nombres:

 

Editar el archivo vendor/doctrine/orm/lib/Doctrine/ORM/Mapping/Driver/DatabaseDriver.php

 

 

Entonces podemos ejecutar:

Una vez hecho, volvemos a dejar el archivo DatabaseDriver.php como estaba.

 

Fuente

Dejar un comentario

Una idea sobre “Resuelve el error ORM de Doctrine con tablas sin clave principal en MySQL al mapear la base de datos.”