Oracleスキーマをダンプしようとしていますが、残念ながらORA-24345
というエラーが表示されます。私の読んだところでは、データベースハンドルにLongReadLen
オプションを設定する必要があるようです。dbicdumpでDBI LongReadLenを設定する
しかし、dbicdump
にこのパラメータを設定する方法が見つかりません。これに関する助けを感謝します。
ありがとうございます。
Oracleスキーマをダンプしようとしていますが、残念ながらORA-24345
というエラーが表示されます。私の読んだところでは、データベースハンドルにLongReadLen
オプションを設定する必要があるようです。dbicdumpでDBI LongReadLenを設定する
しかし、dbicdump
にこのパラメータを設定する方法が見つかりません。これに関する助けを感謝します。
ありがとうございます。
あなたが長いまたはLONGRAW列の最大サイズは、取得するためにDBD::Oracle
LongReadLen
でそのパラメータを設定します。これらの列のいずれかがLongReadLenより長い場合は、データ切り捨てエラーが発生するか(LongTrunkOkがfalse)、列がサイレントに切り捨てられます(LongTruncOkがtrue)。 80.
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
キー。
試しましたが動作しません。私は '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