【问题标题】:MYSQL: #1525 - Incorrect DATE value: '', Error when selecting a blank dateMYSQL:#1525 - 不正确的 DATE 值:'',选择空白日期时出错
【发布时间】:2021-07-27 12:23:04
【问题描述】:

我正在将我的项目从 php 5.6 迁移到 7,但是当我尝试选择数据并检查日期是否为空时,mysql 也会更新无效的。但是当我在 php 7 日期上执行此查询时,它会显示 #1525 - 日期值不正确:''。任何人请帮助我。我已经在一个完整项目的多个方面应用了它。

【问题讨论】:

标签: php mysql


【解决方案1】:

你可以试试mysql的sql-mode。

https://dev.mysql.com/doc/refman/8.0/en/sql-mode.html

有一些选项,例如 ALLOW_INVALID_DATES。

在新版本中检查 mysql 更改的默认行为。 MySQL8 使用启用的 sql-mode-options 运行: ONLY_FULL_GROUP_BY、STRICT_TRANS_TABLES、NO_ZERO_IN_DATE、NO_ZERO_DATE、ERROR_FOR_DIVISION_BY_ZERO 和 NO_ENGINE_SUBSTITUTION

第一个非常有趣,因为它需要 SELECT 输出中的“GROUP BY”语句的所有列。我花了很多时间来找出这个问题。我仍然无法理解这种变化的附加价值。

【讨论】:

  • 对于ONLY_FULL_GROUP_BY,这是因为当所选列不是聚合函数的一部分且未分组时,MySQL 可能会从记录集中的任何行中检索这些列的值,从而导致意外结果。见:my explanation and multiple solutions
  • 啊,明白了!!谢谢!但是,默认情况下我不会启用这些选项 - 但我不是 mysql 专家 ;-)
  • 分组时选择记录集中的任何值是MySQL的默认行为。启用ONLY_FULL_GROUP_BY 会强制查询遵守适当的SQL 标准进行分组或使用ANY_VALUE(column) 以避免收到意外结果的歧义。自 MySQL 5.0 以来,有关任何值的警告一直在 MySQL GROUP BY page
  • 我尝试了多种sql模式,但问题仍然无法解决。首先,我在“0000-00-00”上遇到错误,但现在我在 (where date='') 上遇到错误。
  • 您是否使用 PHP 的 PDO 访问数据库?如果是这样,您可以尝试设置此选项:PDO::NULL_EMPTY_STRING
猜你喜欢
  • 1970-01-01
  • 2020-06-17
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多