2011-11-17 5 views
13

나는 오라클을 사용하고 있는데이 오류가 잡 오전 : Symfony2에서 Doctrine OracleSessionInit listener를 사용하는 방법은 무엇입니까?

Could not convert database value "17-NOV-11 12.17.33 AM" to Doctrine Type datetime. Expected format: Y-m-d H:i:s

또한 나는 새 행을 생성 할수 없어 날짜 시간 형식에 대한 오라클의 불만 때문이다.

mysql datetime 형식과 oracle 중 하나가 다른 것을 알고 있습니다.

http://symfony.com/doc/current/cookbook/doctrine/event_listeners_subscribers.html

그리고,이 문제를 해결하기 위해 만든 탑승객 중에 교리 리스너 :

난 당신이 심포니 2 교리 리스너를 사용할 수 있음을 이해

교리/DBAL/이벤트/리스너/OracleSessionInit.php

이 문제는 정확히 어떻게 당신의 심포니에서 차례를 2.

+0

감사합니다 확인! 참고 : 이것은 Symfony 3에서도 작동하는 것 같습니다. –

답변

15

글쎄 나는 이번에 나 자신에게 대답 할 것이다.

이벤트 태그를 사용하여 서비스로 추가해야합니다.

app/config/config.yml 

services: 
    my.listener: 
     class: Doctrine\DBAL\Event\Listeners\OracleSessionInit 
     tags: 
      - { name: doctrine.event_listener, event: postConnect } 

my.listener는 수신기의 임의의 이름입니다.

7

필자의 경우 Oracle은 두 번째 연결 (오라클 키 아래에 저장 됨)이었습니다. 이 응용 프로그램은 PostgreSQL (기본값 인 키 아래에 저장 됨)도 사용했습니다.

청취자가 데이터베이스 (PostgreSQL)에서 실행되는 것이 문제였습니다. 그래서 나는 코드를 변경 :

services: 
    my.oracle.listener: 
     class: Doctrine\DBAL\Event\Listeners\OracleSessionInit 
     tags: 
      - { name: doctrine.event_listener, event: postConnect, connection: oracle } 

그리고 모두 잘 작동합니다!

-2

나는이 링크는 당신을 도울 것입니다 생각 : Symfony2 교리 2. 오라클에 연결

    교리의 "날짜"오라클의 DATE 타입 대신 Oracle 드라이버은 "날짜"의 입력
  1. 지도
  2. 대부분의 일반적인 Oracle Date 및 DateTime 환경 구성을 사용하도록 Doctrine을 적절히 구성합니다. 당신은 이것을 필요로하거나하지 않을 수도 있습니다. 당신은 내게 너무 많은 시간을 저장, 오라클 서버 구성

https://gist.github.com/johnkary/6481664#file-oracledoctrinetypemappinglistener-php

+0

잠재적 인 해결책에 대한 링크는 언제나 환영하지만, [link around context] (// meta.stackoverflow.com/a/8259)를 이용해 동료 사용자가 그것이 무엇인지, 왜 그것이 존재하는지에 대한 아이디어. 대상 사이트에 도달 할 수 없거나 영구적으로 오프라인 상태가되는 경우 중요한 링크의 가장 중요한 부분을 항상 인용하십시오. * 외부 사이트에 대한 링크보다 * 간신히 많다는 것은 [대답을 삭제할 수있는 가능한 이유] (// stackoverflow.com/help/deleted-answers)입니다. –

관련 문제