自 2014 年以来,我托管在外部站点上的 PHP/mySQL 后端一直运行良好。最近,它开始抛出“字段没有默认值”错误。
我检查了配置并发现STRICT_TRANS_TABLES
,在某些情况下,它会为没有默认值的字段提供这些错误。
我的问题是删除此配置值对我来说是否安全。它是 mySQL 5.5.5-10.3.12-MariaDB。
或者,我可以为所有内容提供默认值,但我不知道这些解决方案中的哪一个更有可能导致现有代码库停止正常工作。
我鼓励在 MySQL 中使用严格模式,因为如果禁用严格模式,可能会导致一些不良影响,例如:
如果将值插入到无法容纳的列中,则该值将被静默截断。就像将一个长字符串插入一个较短的 varchar 列,或者将一个大整数插入一个 INT 列。这会导致您的数据库中可能存在虚假值。我更喜欢这些情况是错误的,以防止这种虚假值。
非严格模式允许无意义的日期,例如 0000-00-00。日历中没有这样的日期。我宁愿不允许这个值。如果我需要表示一个值的缺失,我将使用 NULL。
这些案例会影响您的应用吗?我或 Stack Overflow 上的其他任何人都无法预测到这一点。你需要自己测试一下。