2011-11-17 12 views
13

私は、Oracleを使用していると私は、このエラーが供給しています: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

また、私は日時書式についてオラクルの苦情ため、新しい行を作成can't。

私は、mysqlのdatetime形式とoracleが異なることを知っています。

私はあなたがsymfonyの2と教義のリスナーを使用することができることを理解する:

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

そして、この問題を解決するために作成there'sa教義リスナー:

ドクトリン/ 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は2番目の接続(oracleキーの下に格納)でした。 このアプリケーションでは、PostgreSQL(デフォルトのキーの下に格納されています)も使用しました。

リスナがのデフォルトのデータベース(PostgreSQL)で実行されていたという問題がありました。 コードを変更しました:

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

すべて正常です。

-2

私は、このリンクはあなたを助けると思う:Symfony2のとDoctrine 2を使用してOracleに接続する

  1. 地図OracleのDATE型のドクトリンの "日付" タイプの代わりに、Oracleドライバの "日時" へ
  2. よくあるOracleのDateおよびDateTime環境設定を使用するようDoctrineを適切に設定します。これが必要かもしれません。 Oracleサーバーの設定を確認してください

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

+0

潜在的な解決策へのリンクはいつでも歓迎ですが、[リンクの前後にコンテキストを追加](// meta.stackoverflow.com/a/8259)それが何で、なぜそこにあるのかというアイデア。ターゲットサイトに到達できない場合や、永続的にオフラインになる場合は、常に重要なリンクの最も関連性の高い部分を引用してください。 *外部サイト*へのリンク以上のことは、あなたの回答が削除される可能性があることを考慮してください(// stackoverflow.com/help/deleted-answers)。 –

関連する問題