我已将XAMPP服务器从一台笔记本电脑迁移到另一台笔记本电脑(新笔记本电脑)。 我的旧笔记本电脑上有一个XAMPP 64位版本,我在新笔记本电脑上安装了32位版本。
迁移后,我无法从某些表中获取任何pages
数据。
调试后,出现以下查询停止工作:
SELECT * FROM `pages` WHERE f_site_id = '1' AND deactivation_date < 1;
我使用值0000-00-00 00:00:00
初始化deactivation_date字段。
将查询从上面更改为以下内容:
SELECT * FROM `pages` WHERE f_site_id = '1' AND deactivation_date = '0000-00-00';
似乎再次正常工作。
任何人都可以向我解释上述原因吗?
有更多地方我有查询检查timestamp < 1
,在我更换所有查询之前,我想知道为什么会发生这种情况。
修改 并且最后一个查询是检查空时间戳的正确方法吗?
答案 0 :(得分:2)
你没有提及你的新旧MySQL版本,因此很难确切地说明这一点。
较旧版本的MySQL具有SQL严格模式,而NO_ZERO_IN_DATE模式已禁用。因此,将一个小整数作为DATE
生成将生成一个有效的,如果非常早的日期。
以后的版本不会这样做。当您尝试将小整数转换为DATE
时,较新的MySQL会产生NULL
。而且,anything < NULL
会产生错误。
我认为发生了什么事。随着时间的推移,MySQL和MariaDB团队正在稳步地试图摆脱数据类型的邋。。