我有一个表'forms',它有一个主键- 'id'。这个主键是通过迁移创建的:
$this->createTable('forms', [
'id' => $this->primaryKey(),
'group_id' => $this->integer(11),
'form_id' => $this->integer(11)
]);
现在我需要删除这个主键'id',并从'form_id'和'group_id'创建一个新的复合主键。
我在新迁移中尝试过类似的方法:
public function safeUp()
{
$this->dropPrimaryKey('id', 'forms');
$this->addPrimaryKey('pk_forms', 'forms', ['form_id', 'group_id']);
}
但是错误发生了:删除主键ID...异常错误:数据库状态[42000]:语法错误或访问冲突:1075不正确的表定义;只能有一个自动列,并且必须将其定义为键
如何删除旧主键并创建新主键?
1条答案
按热度按时间ttisahbt1#
该错误意味着主键是一个自动递增列,此类列必须是错误所述的键,因此要替换它,您需要首先删除auto_increment行为
我还没有真正使用过Yii迁移,但这可能会工作(或者...它可能不会)