由于某种原因,doctrine试图插入一个名为primary的索引,而不是在我的MYSQL数据库上实际添加主键,这就是Doctrine生成的:
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 :(得分:1)
在此处添加有关多列唯一约束的信息,因为这是我用Google搜索时出现的内容。
如果你想要这样的SQL:
CONSTRAINT uc_PersonID UNIQUE (P_Id,LastName)
在Doctrine2中使用此注释
@Table(name="ecommerce_products",uniqueConstraints={@UniqueConstraint(name="search_idx", columns={"name", "email"})})