2011-11-17 2 views
13

Sto usando Oracle e sto riceve questo errore:Come utilizzare il listener Doctrine OracleSessionInit con Symfony2?

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

Inoltre non posso creare nuove righe perché i reclami di Oracle sul formato datetime.

So che il formato datetime mysql e quello oracle sono diversi.

ho capito che è possibile utilizzare gli ascoltatori dottrina con symfony 2:

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

E, c'è una dottrina ascoltatore creato per risolvere questo problema:

Dottrina/DBAL/eventi/ascoltatori/OracleSessionInit.php

La domanda è come esattamente il vostro accenderlo in symfony 2.

+0

Grazie, mi hai salvato così tanto tempo !!! Nota: questo sembra funzionare anche con Symfony 3 –

risposta

15

Bene Sembra che risponderò a me stesso questa volta.

È necessario aggiungerlo come servizio utilizzando il tag evento.

app/config/config.yml 

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

my.listener è un nome arbitrario per l'ascoltatore.

7

Nel mio caso Oracle era una seconda connessione (memorizzata nella chiave oracle). L'applicazione utilizzava anche PostgreSQL (memorizzato nella chiave predefinita).

Il problema era che Listener è stato eseguito sul database predefinito (PostgreSQL). Così ho cambiato il codice per:

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

E tutto funziona benissimo!

-2

Penso questo link vi aiuterà a:

Collegamento a Oracle con Symfony2 e Dottrina 2.

  1. Mappa di Oracle tipo DATE a "data" di Doctrine tipo invece di "datetime" per Oracle autista
  2. Configura correttamente Doctrine per utilizzare le più comuni configurazioni di ambiente Oracle Date e DateTime. Potresti o non potresti aver bisogno di questo. Controllare la configurazione del server Oracle

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

+0

Un collegamento a una potenziale soluzione è sempre il benvenuto, ma per favore [aggiungi il contesto intorno al link] (// meta.stackoverflow.com/a/8259) in modo che i tuoi utenti abbiano qualche idea di cosa sia e perché è lì. Citare sempre la parte più rilevante di un link importante, nel caso in cui il sito target non sia raggiungibile o sia permanentemente offline. Tieni presente che essere * appena più di un link a un sito esterno * è un [motivo possibile per cui la tua risposta deve essere cancellata] (// stackoverflow.com/help/deleted-answers). –