小编Tom*_*lfe的帖子

使用默认值将NULL插入NOT NULL列

对于一些背景知识,我们使用Zend Framework 2Doctrine.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);
Run Code Online (Sandbox Code Playgroud)

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问题.

任何有关这方面的帮助将不胜感激.

php mysql default-value doctrine-orm zend-framework2

7
推荐指数
1
解决办法
4751
查看次数