繁体   English   中英

添加外键时表迁移问题

[英]Table migration issue while adding foreign key

我的一个文件包含下面的主表:

public function up()
{
    $this->createTable('{{%users}}', [
        'id' => 'pk',
        'uid'=> 'VARCHAR(150) NOT NULL',
        'mydate' => Schema::TYPE_INTEGER . ' NOT NULL',
        'state' => "ENUM('INA','ACT') " . ' NOT NULL',
        'setting' => Schema::TYPE_INTEGER . ' NOT NULL',
    ],'ENGINE=InnoDB'
    );
}

引用上表的uid的子表是:

 $this->createTable('{{%xyztable}}', [
            'id'=>'pk',
            'uid' => 'integer NOT NULL',
            'server_time' => Schema::TYPE_INTEGER . ' NOT NULL',
            'answer' => 'VARCHAR(135) NOT NULL',
        ],'ENGINE=InnoDB'
    );

    $this->addForeignKey('fk_unique_id',"{{%xyztable}}", 'uid', '{{%users}}', 'uid', 'CASCADE', 'CASCADE');

在调用迁移时,出现以下错误

Error Info:
Array
(
    [0] => HY000
    [1] => 1215
    [2] => Cannot add foreign key constraint
)

我花了一个多小时,但无法弄清楚这个错误。

为了创建外键:

1)两列应具有相同的类型。

您有不同的类型( stringinteger ):

'uid' => 'VARCHAR(150) NOT NULL',

'uid' => 'integer NOT NULL',

2)在表中,对连接列的外键引用应具有索引。

在您的代码中,这也丢失了。

在迁移中,您可以使用createIndex()方法创建索引。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM