我们在生产中有表(在本地我尝试做同样的事情,一切都按预期工作,也许我有更新的数据库版本)。
表包含许多列,其中两列是数字和年份。这些列与唯一的约束键绑定(bind)。
当我进行查询时,例如
SELECT * FROM `order` WHERE number IS NULL AND YEAR = 2018
我得到了不止一行。这并不重要,这是正确的。 [我可以有 100 行为 null,例如 2018 年] 但是当我尝试插入 number = null 和 Year = 2018 的新记录时。我收到错误,例如
SQLSTATE[23000]: Integrity constraint violation: 1062 Duplicate entry '2018' for key 'number_year_UNIQUE'
要记住的一件事是,mysql 中的 null 隐藏地与随机数绑定(bind),当我尝试插入它时,它会以某种方式成为新记录的重复项。
额外信息是:我们使用 Yii1 并通过 ActiveRecord 出现错误。
编辑
建议添加分析后绑定(bind)参数
如下
:yp13='2018',
:yp14='',
本地计算机上的参数完全相同。
编辑
最佳答案
您是否尝试从 sql 控制台(PhpMyAdmin 或类似控制台)运行插入查询?
我怀疑这是 php 方面的问题,就像传递 null 值的方式一样。
关于Mysql 5.5.54 多列的唯一键重复条目,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48583143/