Perl + DBI + oracleで詰まった話
LOBというデータ型があるのですが、これを普通に取得しようとすると失敗する事が多いです。
DBD::Oracle::st fetchrow_hashref failed: ERROR fetching field 3 of 5. LOB value truncated from 829 to 80. DBI attribute LongReadLen too small and/or LongTruncOk not set [for Statement "select * from test_table"]
何を言ってるかというと、LOB型のデータ829バイトを80バイトに切り詰めようとして失敗してるそうです。
DBIの属性である「LongReadLen」の値が小さすぎ、もしくは「LongTrunkOk」が未設定である事が原因だそうです。
何で切り詰めようとしてるのかは、大して調べなかったのでわからないのですが、とにかく切り詰めるのをやめさせればよさそうです。
切り詰めるサイズは、データベースハンドルのLongReadLen属性に入っているので、これを大きくしてやればいいっぽいです。
# バイト数で指定
$dbh->{LongReadLen} = 1024 * 100;
参考
DBIではBLOBデータをどのように扱えばよいのですか?
DBD::Oracle
DBD::Oracle::st fetchrow_hashref failed: ERROR fetching field 3 of 5. LOB value truncated from 829 to 80. DBI attribute LongReadLen too small and/or LongTruncOk not set [for Statement "select * from test_table"]
何を言ってるかというと、LOB型のデータ829バイトを80バイトに切り詰めようとして失敗してるそうです。
DBIの属性である「LongReadLen」の値が小さすぎ、もしくは「LongTrunkOk」が未設定である事が原因だそうです。
何で切り詰めようとしてるのかは、大して調べなかったのでわからないのですが、とにかく切り詰めるのをやめさせればよさそうです。
切り詰めるサイズは、データベースハンドルのLongReadLen属性に入っているので、これを大きくしてやればいいっぽいです。
# バイト数で指定
$dbh->{LongReadLen} = 1024 * 100;
参考
DBIではBLOBデータをどのように扱えばよいのですか?
DBD::Oracle
time stamp:2010/03/31 22:41:15
トラックバック(0)|コメント(0)
トラックバック(0)|コメント(0)
この記事のトラックバックURL:
コメントを書く
何かしら