对我来说,关闭STRICT_TRANS_TABLES是否安全?

时间:2019-02-23 00:30:08

标签: mysql sql-mode

自2014年以来,我在外部站点上托管的PHP / mySQL后端一直运行良好。最近,它开始引发“字段没有默认值”错误。

我检查了配置,发现STRICT_TRANS_TABLES,在某些情况下,如果没有默认字段,则会出现这些错误。

我的问题是,删除该配置值是否对我安全。这是mySQL 5.5.5-10.3.12-MariaDB。

或者我可以给所有默认值,但是我不知道这些解决方案中的哪一个更可能导致现有代码库无法正常工作。

1 个答案:

答案 0 :(得分:4)

我鼓励在MySQL中使用严格模式,因为如果禁用严格模式,则可能会导致某些不良后果,例如:

  • 如果将值插入到无法容纳的列中,则该值将被静默截断。就像在较短的varchar列中插入长字符串,或在INT列中插入大整数一样。这将导致您在数据库中可能有假值。我希望这些情况是错误的,以防止出现这种伪造的值。

  • 非严格模式允许无意义的日期,例如0000-00-00。日历中没有这样的日期。我希望不允许使用此值。如果需要表示不存在值,则将使用NULL。

这些情况会影响您的应用程序吗?我或Stack Overflow上的任何其他人都无法预测到这一点。您需要自己进行测试。