yii迁移返回1215 mysql错误

时间:2014-06-04 07:59:18

标签: php mysql sql yii migration

搜索并检查我的代码后&结束了,现在我想问 我有2个表umessageureply,当我想将ureply refrence中的外键添加到umessage时,我得到1215 mysql错误。

文件m140602_080318_create_table_umessage.php中创建umessage表的代码:

public function safeUp()
{
    /*
     * Create table umessage, this is connection way between customer & seller about specific object
     * Add foreign key to table user and it's column id with sender column
     * Add foreign key to table object and it's column id with objId column
     */
    $this->createTable('tbl_umessage', array(
        'id' => 'pk',
        'time' => 'INT(15) NOT NULL',
        'body' => 'TEXT NOT NULL',
        'status' => 'TINYINT NOT NULL DEFAULT 0',
        'visibleToS' => 'TINYINT NOT NULL DEFAULT 0',
        'visibleToR' => 'TINYINT NOT NULL DEFAULT 0',
        'sender' => 'INT(11)',
        'objId' => 'INT(11) NOT NULL',
    ), 'ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci');
}  

文件m140602_080329_create_table_ureply.php中创建ureply表的代码:

public function safeUp()
{
    /*
     * Create table ureply which store all replies to exact message
     * Add foreign key to table umessage and it's column id with msgId column
     */
    $this->createTable('tbl_ureply', array(
        'id' => 'pk',
        'time' => 'INT(15) NOT NULL',
        'body' => 'TEXT NOT NULL',
        'isSender' => 'TINYINT NOT NULL DEFAULT 0',
        'msgId' => 'INT(11) NOT NULL',
    ), 'ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci');

    $this->addForeignKey('fk_ureply_umessage', 'tbl_ureply', 'msgId', 'umessage', 'id', 'CASCADE', 'CASCADE');
} 

1215错误是添加fk_ureply_umessage外键,我找不到我的傻瓜。 任何帮助将不胜感激。提前谢谢。

2 个答案:

答案 0 :(得分:1)

addForeignKey方法出错:

$this->addForeignKey('fk_ureply_umessage', 'tbl_ureply', 'msgId', 'umessage', 'id', 'CASCADE', 'CASCADE');

外键引用的表应为tbl_umessage而不是umessage

$this->addForeignKey('fk_ureply_umessage', 'tbl_ureply', 'msgId', 'tbl_umessage', 'id', 'CASCADE', 'CASCADE');

答案 1 :(得分:0)

错误与外键引用有关,检查外键与其引用之间的数据类型是否等效