繁体   English   中英

使用Doctrine ORM&Zend2&Oracle保存日期时,“文字与格式字符串不匹配”

[英]“literal does not match format string” when saving dates using Doctrine ORM & Zend2 & Oracle

当我尝试使用Doctrine ORM(特别是在Zend2 + Oracle中)保存Date或DateTime字段时,出现以下错误:

使用参数[23,“某些标题”,执行'INSERT INTO NEWS(ID,TITLE,SLUG,CONTENT,ACTIVE,PUBLISH_DATE,CATEGORY_ID)值(?,?,?,?,?,?,?)时发生异常,“一些-”,“一些内容”,“ 1”,“ 2016-06-18 00:00:00”,2]:

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

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

我已经通过更换线来解决了

return EntityManager::create($connection, $config);

在以下文件中: \\vendor\\doctrine\\doctrine-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;

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM