【发布时间】: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 TABLE
testtable(idint(11) NOT NULL,orderDateFromdate DEFAULT NULL,orderDateTOdate 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 实例之间有什么区别吗?
标签: mysql mysql-error-1064 mysql-5.6 mysql-5.5 mysqlupgrade