这是我的第一个问题,所以请耐心等待.. :)
我们是两个开发人员,都拥有相同的 MySql DB 和相同的表和值。
一个是 MySql 5.5 版,并且工作正常(显然),正如其他开发人员告诉我的那样。
在我的装有 MySql 5.1.44(基本 MAMP 安装)的机器上,我遇到了以下奇怪的问题。
一个非常大的查询(不是我的)失败并出现错误“列'xd'不能为空”。
去除碎片我把它缩小到这个:
select xd, avg(media) from questionario_punteggi where somefield = 1 union select 1,2
注意,没有 somefield = 1 的记录,所以第一个选择返回一个空集
我们有一个带有 AVG() 函数的 SELECT,它返回一个空集 UNION 另一个 SELECT 返回一些东西(1,2 只是我现在作为示例放置的随机值)
- 如果我删除 AVG() 查询有效。
- 如果我删除 xd (以及右侧的 1,2 中的 2),则查询有效。
- 如果我删除 UNION 查询有效。
- 如果我用 somefield = 1 设置一些记录,则查询有效。
- 在另一台机器 5.5 上,查询有效。
否则错误是:
1048 - 列“xd”不能为空
字段是:
`xd` char(3) NOT NULL DEFAULT '001',
`media` decimal(7,4) NOT NULL DEFAULT '0.0000',
`somefield` tinyint(4) NOT NULL DEFAULT '0',
天哪。有什么帮助吗?谢谢。
更新
它已作为 MySql <= 5.1 中的 BUG 报告给我,在 MySql 5.5 之前已修复。我没有详细信息,但我相信消息来源