CDbCommand无法执行SQLSTATE [23000]

时间:2014-01-28 11:59:00

标签: php mysql yii

我正在尝试创建用户,但每次点击创建时,都会收到此错误:

CDbCommand failed to execute the SQL statement: SQLSTATE[23000]: Integrity constraint       violation: 1452 Cannot add or update a child row: a foreign key constraint fails (`dcpcommunity`.`system_users`, CONSTRAINT `system_users_ibfk_1` FOREIGN KEY (`party_id`) REFERENCES `parties` (`id`)). The SQL statement executed was: INSERT INTO `system_users` (`status`, `date_modified`, `username`, `password`, `date_last_login`, `date_created`, `user_role`, `isLogin`) VALUES (:yp0, :yp1, :yp2, :yp3, :yp4, :yp5, :yp6, :yp7)

我读到这个错误意味着我的表中没有'party_id',但我检查了三次,并且party_id作为我system_users表的主键存在。

我也看到它显示REFERENCES parties并且我在模型中检查了引用部分并将其更改为我的表名,我仍然收到此错误。

public function relations()
{
    // NOTE: you may need to adjust the relation name and the related
    // class name for the relations automatically generated below.
    return array(
        'party' => array(self::BELONGS_TO, 'system_users', 'party_id'),
    );
}

修改

[system_users]
pk: party_id
username
password
date_last_login
status
date_created
date_modified
user_role
isLogin

有一个派对表,其中包含字段ID和party_type_id

修改

我检查了我的数据库,在我的system_users表中,我发现party_id与以下内容有关:

db.parties.id

如何在创建新记录时建立此关系?

1 个答案:

答案 0 :(得分:1)

作为sql错误说明:REFERENCES party id ... parties是db中的一个表。 AR将寻找称为Party的AR模型,作为关系函数状态。 在AR模型中,“party”应该是使用表“party”的定义。 该错误来自db(架构)。 create动作尝试插入一个与system_users或party中的模式定义不对应的值。