MySQL 从 5.5 升级到 5.6,日期空条件失败
Posted
技术标签:
【中文标题】MySQL 从 5.5 升级到 5.6,日期空条件失败【英文标题】:MySQL upgrade from 5.5 to 5.6, date null condition failing 【发布时间】:2017-01-07 20:06:24 【问题描述】:我们已将 mysql 数据库从 v5.5 迁移到 5.6,一切正常, 但是今天我遇到了一个问题,该列的空值不符合条件。 条件:(order_schedule.date_from 和 order_schedule.date_to 在数据库中都为空)
order_schedule.date_from 为空且 order_schedule.date_to 为空
这应该是真的,而它在升级 MySQL 5.6 后返回假,检查同样在 MySQL5.5 中返回真。
提前致谢!!
【问题讨论】:
此条件在 v5.6 中也将返回 true,如果两个字段都真正设置为 null。所以,我的猜测是至少其中一列设置为其他值。 select count(*) from mybooking_testing.testtable where NOW() NOT BETWEEN testtable.orderDateFrom AND testtable.orderDateTO and testtable.id = 176544 在 MySQL5.5 中返回 1,而在 MySQL 5.6 中返回 0。 @影子 很抱歉,但这并没有告诉我们任何事情,因为我们不知道您的数据是什么样的。 @Shadow 这是创建语句,在 testtable 中只有一行,即:id =176544 和 orderDateFrom =NULL orderDateTO =NULL 'CREATE TABLEtesttable
(id
int(11) NOT NULL, orderDateFrom
date DEFAULT NULL, orderDateTO
date DEFAULT NULL, PRIMARY KEY (id
) ENGINE=InnoDB DEFAULT CHARSET=utf8;'
太棒了。如果您使用问题本身中提到的选择标准 (order_schedule.date_from IS NULL AND order_schedule.date_to IS NULL
) 运行查询,那么这 2 个 MySQL 实例之间有什么区别吗?
【参考方案1】:
只需更改该列的凭据并允许为空
【讨论】:
select count(*) from mybooking_testing.testtable where NOW() NOT BETWEEN testtable.orderDateFrom AND testtable.orderDateTO and testtable.id = 176544 在 MySQL5.5 中返回 1,而在 MySQL 5.6 中返回 0。 @aftabHafeez以上是关于MySQL 从 5.5 升级到 5.6,日期空条件失败的主要内容,如果未能解决你的问题,请参考以下文章
从 PHP 5.5 升级到 5.6 后,cURL 文件上传不再起作用
Laravel 从 5.5 升级到 5.6 到 5.7:未捕获 ReferenceError: axios is not defined