在尝试将记录插入某个表时,我收到如下错误:
Data truncation: Incorrect datetime value: ‘0000-00-00 00:00:00’ for column ‘deleted_at’ at row 1
搜索我发现以下问题非常有见地:
> MySQL Incorrect datetime value: ‘0000-00-00 00:00:00’
> Data truncation: Incorrect datetime value: ”
> MySQL: Data truncation: Incorrect datetime value: ‘2006-10-01 02:22:44’
但由于以下原因,我不能采取这些答案中给出的任何解决方案:
>使用here和here中提到的任何其他JAR(虽然这不是maven项目)不是一种选择.我必须使用同一个罐子.
>对于字段deleted_at,我不能使用除“0000-00-00 00:00:00”之外的任何内容.显然,有一个针对此的检查.你看,最初,delete_at日期无法设置(我会使用像is_deleted这样的标志.如果有更好的方法请告诉我).
>改变MysqL配置不是像here那样的选项.他做了很好的解释.我认为这是主要问题.
As to why you are encountering the issue, it’s likely that the sql_mode setting for your session includes
NO_ZERO_DATES
.
我(遗憾地)对这些事情没有多少控制权,因为我不是唯一一个参与这个项目的人.为了让您了解该项目,这就是我收到错误的方法.
他们不使用任何日志记录.希望你能得到这张照片.
所以,考虑到我所约束的约束,除了上面给出的解决方案之外,还有一种方法可以插入’0000-00-00 00:00:00′(我希望可能在JDBC中使用某些东西).
MysqL服务器版本:5.7.12-0ubuntu1
解决方法:
经过三天的辛劳,我终于找到了解决方案.
如此answer中所述,如果变量sql_mode设置为NO_ZERO_DATES,MysqL将不允许插入零日期.
As to why you are encountering the issue, it’s likely that the sql_mode setting for your session includes
NO_ZERO_DATES
.
现在,我可以通过在命令行中执行以下操作来清除变量sql_mode:
SET GLOBAL sql_mode = '';
但如前所述,我不允许这样做.所以,我需要一个基于会话的解决方案.这是document本身给出的.
SET SESSION sql_mode = '';
所以,我在打开连接后添加了以下行.
try (Statement statementSet = connection.createStatement()) {
statementSet.execute("SET SESSION sql_mode = ''");
}
它奏效了.我能够使用’0000-00-00 00:00:00’插入和更新datetime字段.这清除了仅针对当前会话的sql_mode变量.全局设置就是这样.
MysqL> SHOW VARIABLES LIKE 'sql_mode';
+---------------+-------------------------------------------------------------------------------------------------------------------------------------------+
| Variable_name | Value |
+---------------+-------------------------------------------------------------------------------------------------------------------------------------------+
| sql_mode | ONLY_FULL_GROUP_BY,STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION |
+---------------+-------------------------------------------------------------------------------------------------------------------------------------------+
1 row in set (0.00 sec)
我不得不这样做,因为我别无选择.不建议这样做.
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。