我试图转储我的Oracle架构,但不幸的是遇到了ORA-24345
错误。从我的阅读看起来我需要在数据库句柄上设置LongReadLen
选项。
但是,我找不到在dbicdump
中设置此参数的方法。感谢任何帮助。
感谢您的帮助。
答案 0 :(得分:0)
您可以在DBD::Oracle
中设置该参数LongReadLen
要检索的long或longraw列的最大大小。如果其中一列长于LongReadLen,则会引发数据截断错误(LongTrunkOk为false)或者将以静默方式截断列(LongTruncOk为true)。
DBI目前默认为80。
答案 1 :(得分:0)
DBD :: Oracle似乎没有将句柄属性作为connect
的参数,这使得这有点困难,但幸运的是DBIC和dbicdump有办法解决它。像这样运行dbicdump:
dbicdump <options> dbi:Oracle:blah username password \
'{ on_connect_do => sub { shift->_dbh->{LongReadLen} = 123456 }'
dbicdump识别额外参数(在DSN,用户名和密码之后)是否看起来像perl数据结构或子例程,如果是这样,则通过eval
运行它,并且DBIx :: Class :: Storage :: DBI具有on_connect_do,无论何时建立连接,它都可以针对句柄运行SQL或任意代码。在这种情况下,我们可以使用它将LongReadLen attr设置为您想要的任何值。
如果你使用1-arg版本的dbicdump从配置文件中获取选项,你可能会运气不好,除非你的加载器是Config::Any::Perl
,在这种情况下你可以指定sub相同方式,通过connect_info
/ options
/ on_connect_do
密钥。