No has perdido la suerte !!
Primero, suelte todas las claves foráneas de todas las tablas que D2 está administrando. Copia & ejecutar el resultado de esta consulta:
SET SESSION group_concat_max_len=8192; -- // increase this if you do not see the full list of your tables
SELECT IFNULL(REPLACE(GROUP_CONCAT('ALTER TABLE ',TABLE_NAME,' DROP FOREIGN KEY ',CONSTRAINT_NAME,'; '), ',', ''), '') FROM information_schema.TABLE_CONSTRAINTS WHERE CONSTRAINT_TYPE='FOREIGN KEY';
Entonces reemplazar el método supportsForeignKeyConstraints()
en /vendor/doctrine-dbal/lib/Doctrine/DBAL/Platforms/MySqlPlatform.php
(o donde esta clase se encuentra) a:
public function supportsForeignKeyConstraints()
{
return false;
}
Esto detendrá Doctrina de crear extranjera restricciones clave en su próximo comando doctrine:schema:update
. Después de eso, puede simplemente ejecutar una instrucción ALTER TABLE PARTITION BY...
donde sea necesario (D2 no admite partición en un nivel de esquema). Recomiendo que haga una copia de seguridad & trunque primero las tablas (usando --no-create-info
) para que los cambios de estructura se ejecuten lo más rápido posible y luego restaurelos.
Como este individuo dice here, y según mi experiencia personal, a D2 no le importa si tiene FK o no, siempre que las definiciones de relación adecuadas estén en su lugar.
PS: Estoy trabajando actualmente en la ampliación de la sintaxis de anotación para apoyar las definiciones apropiadas columna de la tabla &, incluyendo ENGINE
(this podría ser útil), PARTITION BY
& la matriz @Column options
(es decir {"fixed"=true, "unsigned"=true, "default"=0}
)
La general esfuerzo equivale a un par de noches de insomnio para la ingeniería inversa & parches de código, espero que lo haga más rápido :)
Probablemente obtendrá mejores resultados si divide esto en dos preguntas. –
Si desea obtener un rendimiento rápido con particiones y doctrina, no lo haga. Servidor más poderoso es más barato. Y las particiones solo traerán confusión. –