【问题标题】:yii null foreign keyyii 空外键
【发布时间】:2014-03-25 03:52:43
【问题描述】:

我有dbhttp://pikucha.ru/icFsc这样的结构(这里不能加图)

有些地址我没有metro(其他表也有同样的问题,例如“user”可能没有地址,但是“user”表有限制)

如果我在 mysql 中添加一条记录就可以了。如果我使用 yii 做同样的事情,我会得到一个错误

Cannot add or update a child row: a foreign key constraint fails (address, CONSTRAINT fk_Address_Area1 FOREIGN KEY (area_id) REFERENCES area (id) ON UPDATE NO ACTION)

那么,问题出在哪里?

【问题讨论】:

  • 同时显示你的模型规则会对你有很大帮助!

标签: php sql yii foreign-keys


【解决方案1】:

这是因为您的关系不允许列中的 NULL 值。您必须编辑特定列,并选中 empty 复选框。然后 MySQL 将允许 NULL 值。

【讨论】:

    【解决方案2】:

    由于以下某些原因,可能会发生此错误
    1. fk 和 pk 的数据类型可能不一样。
    2. fk和pk大小可能不一样
    3. 类型可能不同,如无符号、二进制、无符号二进制和 null
    4.你试图放入城市的值没有出现在区域表中

    【讨论】:

    • 我检查了每一项。不幸的是,它没有帮助。我允许每列为空但 id。我直接执行sql查询没有问题。但是 yii 返回错误。
    • 我有这个。或者你需要别的东西? 更新address SET id=:yp0, country_id=:yp1, area_id=:yp2, city_id=:yp3, metro_id=:yp4, address=:yp5 seniordriver.address.id='8'
    • 不,实际上我的意思是请发布您保存模型的代码。无论您是使用 yii 分配还是使用 $_POST['attributeName'] 进行自定义分配。
    • 因为如果查询在 phpMyAdmin 中运行完美,那么它也应该在 yii 查询中运行。因为 yii 也将查询和参数转换为与 mySql 兼容的查询和参数样式。你的作业应该有问题。当您在 PhpMyAdmin 中运行直接查询时,您会检查它的确切值,但是当您通过 yii 运行它时,有时会存在不需要的值。您还需要检查模型中的值是否正确。
    • 感谢您的帮助。我发现了问题所在。 Yii 将空值发送为 '' 而不是 NULL。我已将此 setOnEmpty'=>true, 'value'=>null 添加到规则中,现在它可以正常工作
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-07-08
    • 2015-03-08
    • 1970-01-01
    • 1970-01-01
    • 2015-03-08
    • 1970-01-01
    相关资源
    最近更新 更多