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