Mysql 5.5.54具有多列的唯一键上的重复条目

时间:2018-02-02 12:52:23

标签: mysql yii

我们有生产中的表(在本地我尝试做同样的事情,一切都按预期工作,也许我有更新的数据库版本)。

表包含许多列,其中两列是数字和年份。这些列使用唯一约束键绑定。

当我查询

return_value

我得到的不止一行。它并不重要,这是正确的。 [我可以有100行null,例如2018] 但是当我尝试插入number = null和year = 2018的新记录时,我收到错误,例如

SELECT * FROM `order` WHERE number IS NULL  AND YEAR = 2018

有一点需要注意的是,mysql中的null隐藏着随机数,当我尝试插入它时,它会以某种方式变成新记录的副本。

由于额外信息是:我们使用Yii1并通过ActiveRecord显示错误。

修改

在建议之后添加分析得到了绑定参数

他们如下

SQLSTATE[23000]: Integrity constraint violation: 1062 Duplicate entry '2018' for key 'number_year_UNIQUE'

本地计算机上的参数完全相同。

修改

enter image description here

enter image description here

enter image description here

2 个答案:

答案 0 :(得分:1)

你试过从sql console(PhpMyAdmin或类似的)运行插入查询吗?

我怀疑它在php方面的问题就像传递空值的方式一样。

答案 1 :(得分:0)

问题在于我尝试插入空字符串''不是空值,如上所述(见截图)。 在代码中我有类似

的东西
$order = new Order();
//some other stuff
$order->number = null;
$order->save();

但是,在规则中(在新添加的验证方法中,数字变为空字符串) 添加方案(Yii特定)和问题已经消失。