Doctrine2和MySQL分区

| 是否有人有将分区功能与Doctrine2库结合使用的经验? 第一个问题是Doctrine为关联列创建外键,有人知道如何防止或禁用它吗? 第二个问题是如何指定自定义表定义(PARTITION BY ...)? 提前致谢!     
已邀请:
您还不走运! 首先,从所有正在管理的表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\';
然后在
/vendor/doctrine-dbal/lib/Doctrine/DBAL/Platforms/MySqlPlatform.php
(或此类所在的位置)中覆盖
supportsForeignKeyConstraints()
方法以:
public function supportsForeignKeyConstraints()
{
    return false;
}
这将阻止Doctrine在您的下一个“ 4”命令上创建外键约束。之后,您可以在需要的地方简单地执行
ALTER TABLE PARTITION BY...
语句(D2不支持架构级别的分区)。我建议您首先备份并截断表(使用
--no-create-info
),以便尽快执行结构更改,然后将其还原。 就像这个人在这里所说的那样,根据我的个人经验,只要有正确的关系定义,D2不会在乎您是否有FK。 附注:我目前正在扩展注释语法,以支持正确的表和列定义,包括
ENGINE
(这可能很有用),
PARTITION BY
和@Column
options
数组(即
{\"fixed\"=true, \"unsigned\"=true, \"default\"=0}
)。 对于反向工程和代码补丁,整个工作耗费了不眠之夜,希望您能更快地完成:)     
MySQL中的PARTITION引擎在键方面有主要限制。请查看最新的文档,当前在这里:http://dev.mysql.com/doc/refman/5.1/en/partitioning-limitations-partitioning-keys-unique-keys.html 如果Doctrine要求分区不支持的键,那么您很不走运。分区引擎在设计上非常受限制-它旨在用于不经常读取的档案存储。除非您进行更改,否则很少有可识别MySQL的应用程序可与分区一起使用。 我建议按预期使用分区-存档。答案是将数据存储在更主流的MySQL数据引擎中。     

要回复问题请先登录注册