【问题标题】:MySQL upgrade from 5.5 to 5.6, date null condition failingMySQL 从 5.5 升级到 5.6,日期空条件失败
【发布时间】: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 (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 实例之间有什么区别吗?

标签: mysql mysql-error-1064 mysql-5.6 mysql-5.5 mysqlupgrade


【解决方案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
猜你喜欢
  • 2013-12-08
  • 2013-07-29
  • 2014-03-20
  • 2013-11-21
  • 1970-01-01
  • 1970-01-01
  • 2017-09-28
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多