2011-04-15 106 views
6

出于某种原因学说试图插入称为原发性的,而不是实际添加在我的MySQL数据库中的主键索引,这是什么主义产生:学说2多个主键

CREATE UNIQUE INDEX primary ON my_table (columnOne, columnTwo); 

这是我的SQL编辑器生成,这是唯一可行的方法:

ALTER TABLE my_table ADD PRIMARY KEY (columnOne,columnTwo); 

这是我的课:

.... 
class MyTable 
{ 
    /** 
    * @var integer $columnOne 
    * 
    * @Column(name="columnOne", type="integer", nullable=false) 
    * @Id 
    * @GeneratedValue(strategy="NONE") 
    */ 
    private $columnOne; 

    /** 
    * @var integer $columnTwo 
    * 
    * @Column(name="columnTwo", type="integer", nullable=false) 
    * @Id 
    * @GeneratedValue(strategy="NONE") 
    */ 
    private $columnTwo; 
} 
+0

你是怎么解决这个问题到底是谁? – helvete 2017-11-09 13:30:01

回答

2

答案是是和不是。请看看这个博客帖子:

http://www.doctrine-project.org/blog/dc2-experimental-associations-id-fields.html

+0

我认为问题在于doctrine orm:schema-tool:update试图插入一个名为primary的索引而不是实际的主值。这将失败,并给我一个mysql警告。 – Dennis 2011-04-15 13:54:16

+0

@丹尼斯只是一个预感,但我认为你不应该在组合键中使用'@ GeneratedValue'。 – vbence 2011-04-15 13:58:52

+0

如果我删除GeneratedValue,或者如果我使用strategy =“AUTO”(如果im没有错,也是一样)orm:schema-tool:update只要我有一个主键就不会抱怨,但如果我删除了主关键或如果我想例如要创建一个干净的数据库我仍然会得到CREATE UNIQUE INDEX问题。 – Dennis 2011-04-15 20:16:25