Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/235.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php &引用;文字与格式字符串“不匹配”;使用ORM&;保存日期时;Zend2&;神谕_Php_Exception_Doctrine Orm_Oracle11g_Zend Framework2 - Fatal编程技术网

Php &引用;文字与格式字符串“不匹配”;使用ORM&;保存日期时;Zend2&;神谕

Php &引用;文字与格式字符串“不匹配”;使用ORM&;保存日期时;Zend2&;神谕,php,exception,doctrine-orm,oracle11g,zend-framework2,Php,Exception,Doctrine Orm,Oracle11g,Zend Framework2,当我尝试使用ORM保存日期或日期时间字段时,特别是在Zend2+Oracle中,我会遇到以下错误: 使用参数[23,“部分标题”、“部分片段”、“部分内容”、“1”、“2016-06-18 00:00:00”、“2]”执行“插入新闻(ID、标题、片段、内容、活动、发布日期、类别ID)值(?、、、、、、、、、、、?)”时发生异常: ORA-01861:文字与格式字符串不匹配 经过一些搜索,我发现这背后的原因很可能是ORM中的错误,OracleSessionInit在使用Oracle时没有正确初始化

当我尝试使用ORM保存日期或日期时间字段时,特别是在Zend2+Oracle中,我会遇到以下错误:

使用参数[23,“部分标题”、“部分片段”、“部分内容”、“1”、“2016-06-18 00:00:00”、“2]”执行“插入新闻(ID、标题、片段、内容、活动、发布日期、类别ID)值(?、、、、、、、、、、、?)”时发生异常:

ORA-01861:文字与格式字符串不匹配


经过一些搜索,我发现这背后的原因很可能是ORM中的错误,OracleSessionInit在使用Oracle时没有正确初始化,因此NLS或其他环境设置没有加载,这意味着没有正确处理日期。

我已通过替换行将其修复

return EntityManager::create($connection, $config);
在文件中:
\vendor\doctor\doctor orm module\src\DoctrineORMModule\Service\EntityManageFactory.php
函数下的
createService.php
使用以下行:

$em = EntityManager::create($connection, $config);
$dbh = $em->getConnection();
$sth = $dbh->prepare("ALTER SESSION SET NLS_DATE_FORMAT='YYYY-MM-DD HH24:MI:SS'");
$sth->execute();
return $em;

我换了线把它修好了

return EntityManager::create($connection, $config);
在文件中:
\vendor\doctor\doctor orm module\src\DoctrineORMModule\Service\EntityManageFactory.php
函数下的
createService.php
使用以下行:

$em = EntityManager::create($connection, $config);
$dbh = $em->getConnection();
$sth = $dbh->prepare("ALTER SESSION SET NLS_DATE_FORMAT='YYYY-MM-DD HH24:MI:SS'");
$sth->execute();
return $em;