php - Doctrine2和MySQL分区

有没有人有结合使用doctrine2库使用分区特性的经验?
第一个问题是,该理论为关联列创建了外键,有人知道如何防止或禁用它吗?
第二个问题是如何指定自定义表定义(按…划分)?
事先谢谢!


最佳答案:

你不是走运!!
首先,从D2正在管理的所有表中删除所有外键。
复制并执行此查询的结果:

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';

然后重写supportsForeignKeyConstraints()中的/vendor/doctrine-dbal/lib/Doctrine/DBAL/Platforms/MySqlPlatform.php方法(或该类所在的任何位置),以:
public function supportsForeignKeyConstraints()
{
    return false;
}

这将阻止条令在下一个命令中创建外键约束。之后,您只需在需要时执行一条doctrine:schema:update语句(d2不支持在模式级别上进行分区)。我建议您先备份和截断表(使用ALTER TABLE PARTITION BY...),以便尽快执行结构更改,然后还原它们。
正如这个人所说,根据我的个人经验,只要有适当的关系定义,d2就不在乎你是否有fks。
P.S.:我目前正在努力扩展注释语法以支持正确的表和列定义,包括--no-create-infohere可能有用)、ENGINE和@columnPARTITION BY数组(即options
总的来说,反向工程和代码补丁需要几个不眠不休的夜晚,希望你能更快地完成:)