首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在DBI转储中设置DBI LongReadLen

在DBI转储中设置DBI LongReadLen
EN

Stack Overflow用户
提问于 2017-12-27 17:46:22
回答 2查看 307关注 0票数 0

我正在尝试转储我的Oracle模式,但不幸地遇到了ORA-24345错误。根据我的阅读,我似乎需要在数据库句柄上设置LongReadLen选项。

但是,我找不到在dbicdump中设置此参数的方法。感谢大家在这方面的帮助。

谢谢你的帮助。

EN

回答 2

Stack Overflow用户

发布于 2017-12-27 18:00:23

您可以在DBD::Oracle中设置该参数

LongReadLen

要检索的long或longraw列的最大大小。如果其中一列的长度大于LongReadLen,则将引发数据截断错误(LongTrunkOk为false),或者该列将被自动截断(LongTruncOk为true)。

目前,DBI默认设置为80。

票数 0
EN

Stack Overflow用户

发布于 2017-12-27 18:36:13

Oracle似乎没有将句柄属性作为connect的参数,这使得这有点困难,但幸运的是,DBIC和dbicdump有一种方法可以解决这个问题。像这样运行dbicdump:

代码语言:javascript
复制
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属性设置为您想要的任何值。

如果您使用1-arg版本的connect_info/options/on_connect_do从配置文件中获取选项,那么您可能就不走运了,除非您的加载器是Config::Any::Perl,在这种情况下,您可以通过dbicdump键以相同的方式指定sub。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/47989825

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档