este problema se puede tratar de diferentes formas, pero nosotros te mostramos la que para nosotros es la resolución más completa.
Solución:
@maxian
La respuesta de Michael Villeneuve no es del todo correcta. En el caso de un entorno de producción o algo así, simplemente no puede eliminar el esquema y volver a crearlo.
La única forma de realizarlo en su esquema actual es de la siguiente manera:
- php aplicación/consola doctrina:esquema:actualización –dump-sql . Copie la salida. Son las consultas SQL directas para actualizar su esquema
- conecte mysql con la línea de comandos de mysql o a través de un cliente de mysql
- Deshabilitar extranjero keys comprobando llamando a esta consulta: “set outsider_key_checks=0;”
- poner las consultas de la doctrina:esquema:actualizar
- Habilitar volver extranjero key comprobando con: “set outsider_key_checks=1;”
no puedo garantizar que no perderás algunos keys pero no sueltas tus datos en absoluto.
Su problema es que desea modificar una tabla con una restricción existente. Veo dos soluciones:
Si está en desarrollo, puede reconstruir su base de datos
doctrine:database:drop --force
doctrine:database:create
doctrine:schema:create
Si estás en producción es un poco más complicado.
Una solución que veo es que podría crear un comando para guardar sus datos, eliminar los datos en las tablas que desea modificar, modificar su esquema, volver a cargar los datos una vez que se modifique su tabla. Dependiendo de los cambios, no debería tomar más de 2-3 horas. Solo asegúrese de tener una copia de seguridad en caso de que su comando vaya al sur.
Actualización de esquema con extranjeroskey cheques deshabilitados
Si las actualizaciones del esquema de Doctrine fallan debido akey limitaciones, simplemente necesita deshabilitar el extranjerokey busca esta actualización en particular.
Como una sola línea, puede ejecutar:
mysql -e "set foreign_key_checks = 0; `app/console doctrine:schema:update --dump-sql`"
esto antepone set foreign_key_checks = 0;
a la salida de app/console doctrine:schema:update --dump-sql
por lo que en realidad llama exactamente lo que Doctrine llamaría pero con extranjerismo.key cheques deshabilitados. Configurar el mysql
llama a tus necesidades.
Su esquema se actualiza y, según sus cambios, no se pierden datos.
Manten eso en mente a veces el orden de las consultas es importante y Doctrine simplemente no los ordenó correctamente. En este caso, debe ordenar las consultas correctamente por su cuenta y luego usar esa lista ordenada de consultas en su lugar.
Puntuaciones y comentarios
Si te ha sido de ayuda este post, sería de mucha ayuda si lo compartieras con más entusiastas de la programación de esta forma contrubuyes a difundir nuestro contenido.