我正在尝试转储我的Oracle架构但不幸的是遇到了ORA-24345
错误。从我的阅读看起来我需要在数据库句柄上设置LongReadLen
选项。
但是,我找不到在dbicdump
中设置此参数的方法。感谢任何帮助。
谢谢您的帮助。
您在DBD::Oracle中设置该参数
LongReadLen
要检索的long或longraw列的最大大小。如果其中一列长于LongReadLen,则会引发数据截断错误(LongTrunkOk为false)或者将以静默方式截断列(LongTruncOk为true)。
DBI目前默认为80。
DBD :: Oracle似乎没有将handle属性作为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
,在这种情况下你可以通过connect_info
/ options
以相同的方式指定sub / on_connect_do
关键。