对于一些背景知识,我们使用Zend 框架 2 and Doctrine在上班。教义总是会插入NULL
对于我们自己不填充的价值观。通常这是可以的,因为如果该字段有默认值,那么它应该使用该默认值填充该字段。
对于我们正在运行的服务器之一MySQL 5.6.16如下所示的查询可以正常运行和执行。虽然NULL
当被插入到一个不可为空的字段中时,MySQL 会在插入时用其默认值填充该字段。
在我们另一台运行的服务器上MySQL 5.6.20,我们运行下面的查询,它失败了,因为它抱怨“field_with_default_value”不能为空。
INSERT INTO table_name(id, field, field_with_default_value)
VALUES(id_value, field_value, NULL);
Doctrine 本身不支持将“DEFAULT”传递到它构建的查询中,因此这不是一个选项。我认为这一定是某种 MySQL 服务器的东西,看起来好像它在一个版本中工作正常,但在另一个版本中不行,但不幸的是我不知道这可能是什么。我们的 SQL 模式在两台服务器上也是相同的('NO_AUTO_VALUE_ON_ZERO,STRICT_TRANS_TABLES,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION'
).
我可能应该提到,如果我实际上在 Workbench 中运行上述 SQL,它仍然不能以相同的方式工作。所以这并不是真正的 Doctrine 问题,而绝对是某种 MySQL 问题。
对此的任何帮助将不胜感激。