Dav*_*vid 10 mysql datetime date data-cleaning
我有一个数据库,旧代码喜欢在Date和DateTime列中插入'0000-00-00'而不是实际日期.所以我有以下两个问题:
跟进:
默认值已设置为null.很久以前,默认是'0000-00-00'.一些代码仍然明确地放置'0000-00-00'.我宁愿强制该代码抛出错误,以便我可以隔离并删除它.
OMG*_*ies 12
有什么我可以在db级别上阻止这个吗?
是的,启用NO_ZERO_DATE模式:
SET sql_mode = 'NO_ZERO_DATE';
Run Code Online (Sandbox Code Playgroud)
行为记录在案.此外,您可能还想将模式设置为包含NO_ZERO_IN_DATE ...
还要确保sql_mode包含STRICT_ALL_TABLES或STRICT_TRANS_TABLES; 没有这些NO_ZERO_IN_DATE只会发出警告,但插入仍然成功.
检测日期字段中现有零值的最佳方法是什么?我有大约一百个表,每个表有2-3个日期列,我不想单独查询它们.
单独的列意味着它们必须单独检查 - 您无能为力.
如果其中的日期并不重要(即只要它非零),您可以更改列定义以使用 NOW() 作为默认值。可能不是一个理想的解决方案,但它确实满足标准:1)非空2)非零我实际上并不为这个建议感到自豪
| 归档时间: |
|
| 查看次数: |
9962 次 |
| 最近记录: |