2017-12-27 26 views
0

Oracleスキーマをダンプしようとしていますが、残念ながらORA-24345というエラーが表示されます。私の読んだところでは、データベースハンドルにLongReadLenオプションを設定する必要があるようです。dbicdumpでDBI LongReadLenを設定する

しかし、dbicdumpにこのパラメータを設定する方法が見つかりません。これに関する助けを感謝します。

ありがとうございます。

答えて

0

あなたが長いまたはLONG​​RAW列の最大サイズは、取得するためにDBD::Oracle

LongReadLen

でそのパラメータを設定します。これらの列のいずれかがLongReadLenより長い場合は、データ切り捨てエラーが発生するか(LongTrunkOkがfalse)、列がサイレントに切り捨てられます(LongTruncOkがtrue)。 80.

0

DBD :: Oracleへ

DBI現在デフォルトでこれはこれは少し困難にされ、connectに引数としての属性を扱う取るようには見えませんが、幸運にもDBICをと方法を持っているdbicdumpそれを回避する。このようdbicdump実行します(DSN、ユーザー名、およびパスワードの後に​​)追加のパラメータは、Perlのデータ構造やサブルーチンのように見えるし、もしそうならevalを通してそれを実行し、DBIx ::クラスならば

dbicdump <options> dbi:Oracle:blah username password \ 
'{ on_connect_do => sub { shift->_dbh->{LongReadLen} = 123456 }' 

dbicdumpが認識されます。 :Storage :: DBIにはon_connect_doがあり、接続が行われるたびにSQLまたは任意のコードをハンドルに対して実行できます。この場合、LongReadLen attrを任意の値に設定するために使用することができます。

1-argバージョンのdbicdumpを使用して設定ファイルからオプションを取得している場合は、ローダーがConfig::Any::Perlでない限り、おそらく運が悪いでしょう。この場合は、 connect_info/options/on_connect_doキー。

+0

試しましたが動作しません。私は 'LongTruncOk'でも使用しました。 'dbicdump -o dump_directory =。/ lib -o components = '[" InflateColumn :: DateTime "]' -o debug = 1 My :: Schema -o preserve_case = 1 'dbi:Oracle:mydbhost/mydbsid 'ユーザパスワード' {on_connect_do => sub {shift - > _ dbh - > {LongTruncOk} = 1} '' 何か不足していますか? – kuronue

関連する問題