2011-11-17 31 views
13

我使用的是Oracle,我recieving此錯誤:如何在Symfony2中使用Doctrine OracleSessionInit監聽器?

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的不一樣。

據我所知,您可以使用學說的聽衆用symfony 2:

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

而且,創造瞭解決此問題的學說看到一隻聽衆:

主義/ DBAL /事件/監聽器/ OracleSessionInit.php

的問題是輪到你它究竟是如何在symfony的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是第二個連接(存儲在oracle密鑰下)。 該應用程序還使用PostgreSQL(存儲在默認鍵)。

問題在於Listener是在默認數據庫(PostgreSQL)上執行的。 因此,我將代碼更改爲:

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

而且一切正常!

-2

我認爲這個鏈接將幫助您:

連接到Oracle與Symfony2的和教條2

  1. 地圖甲骨文的日期類型學說的「日期」類型,而不是「日期時間」爲Oracle驅動程序
  2. 正確配置Doctrine以使用最常見的Oracle Date和DateTime環境配置。你可能會也可能不需要這個。檢查你的Oracle服務器配置

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

+0

一個潛在的解決方案的鏈接總是受歡迎的,但請[在鏈接添加上下文](// meta.stackoverflow.com/a/8259),以便您的同行用戶將有一些想法是什麼以及它爲什麼在那裏。如果目標網站無法訪問或永久離線,請始終引用重要鏈接中最相關的部分。考慮到*僅僅是一個外部網站的鏈接*是[您的答案被刪除的可能原因](// stackoverflow.com/help/deleted-answers)。 –