我在mysql中有表。我发现有些列在插入时没有通过。 mysql 如何接受插入这些记录而不抛出异常?
当我插入行而不向它们传递值时,这些列会向它们添加零值。
我已经仔细检查过这些列不为空并且没有默认值。我确保全局 sql_mode 变量值是默认值,即 ONLY_FULL_GROUP_BY、STRICT_TRANS_TABLES、NO_ZERO_IN_DATE、NO_ZERO_DATE、ERROR_FOR_DIVISION_BY_ZERO、NO_ENGINE_SUBSTITUTION。 mysql版本是8.0.
在 MySQL 中,如果您尝试在表中插入一行而不为每列指定值,数据库将通过以下方式之一处理它:
因此,如果您看到插入记录时没有显式提供所有列的值,则可能是由于以下原因之一造成的。您可以检查表架构中的列定义,以查看是否定义了默认值或者列是否允许 NULL 值。另外,您可以检查 SQL 模式是否设置为 strict。
不允许可为空值和不声明默认值并不是很常见的做法。定义这些取决于您的应用程序的具体要求以及您正在处理的数据的性质。但我确实建议您在不允许 null 时声明默认值,并且在插入时也不要传递值。