Symfony2:doctrine:mapping:import throws Doctrine \ ORM \ Mapping \ MappingException - Table [...]没有主键。

时间:2014-03-06 10:40:15

标签: symfony doctrine-orm

我想为名为stores的表导入Doctrine映射。我这样做:

./app/console doctrine:mapping:import MyBundle annotation --filter="stores" 

我收到错误:

[Doctrine\ORM\Mapping\MappingException]                                                                              
  Table Cat_map has no primary key. Doctrine does not support reverse engineering from tables that don't have a prima  
  ry key. 

我是否错误地使用过滤器?我不希望教条试图映射除“商店”之外的任何表格

请求创建语法:

CREATE TABLE `stores` (
  `id` int(11) unsigned NOT NULL AUTO_INCREMENT,
  `storeid` int(11) NOT NULL,
  `store` text NOT NULL,
  PRIMARY KEY (`id`)
) ENGINE=MyISAM AUTO_INCREMENT=96 DEFAULT CHARSET=utf8;

3 个答案:

答案 0 :(得分:3)

尽管 - filter 属性,但Doctrine会分析所有表格。 如果一切正常,那么它将通过过滤器仅创建指定的实体。

因此,您应该尝试修复添加主键的 cat_map 表。 如果您没有找到方法或者您有特殊需求,请更新您的问题,包括 cat_map 部分。

我希望这有帮助!

答案 1 :(得分:1)

您可以告诉Doctrine忽略与某个正则表达式匹配的表。例如,如果要忽略以" custom _"开头的表,请将其放在config.yml中:

doctrine:
    dbal:
        schema_filter: /^(?!custom_)/

这似乎可以解决问题。有关信息:http://symfony.com/doc/current/bundles/DoctrineMigrationsBundle/index.html#manual-tables

答案 2 :(得分:0)

对现有数据库使用doctrine以外的其他内容。多年来,学说一直没有解决这个问题。