2017-12-27 7 views
0

오라클 스키마를 덤프하려고했지만 불행하게도 ORA-24345 오류가 발생했습니다. 내 독서에서 데이터베이스 핸들에 LongReadLen 옵션을 설정해야하는 것처럼 보입니다.dbicdump에서 DBI LongReadLen 설정

그러나 dbicdump에이 매개 변수를 설정하는 방법을 찾을 수 없습니다. 이것에 대한 도움을 주시면 감사하겠습니다.

도움 주셔서 감사합니다.

답변

0

당신은 길거나 LONGRAW 컬럼의 최대 크기는 검색 DBD::Oracle

LongReadLen

에서 해당 매개 변수를 설정합니다. 이러한 열 중 하나가 LongReadLen보다 길면 데이터 자름 오류가 발생하거나 (LongTrunkOk가 false) 열이 자동으로 잘립니다 (LongTruncOk가 true). 80

0

DBD :: 오라클

DBI 현재 기본값이이 조금 어렵게하는 connect에 인수와 같은 속성을 처리 걸릴하지 않는 것,하지만 다행히 DBIC 및 방법이 dbicdump 그것을 해결할 수 있습니다. 이 같은 dbicdump 실행합니다 (DSN, 사용자 이름 및 암호 후) 추가 매개 변수는 펄 데이터 구조 또는 서브 루틴처럼 보인다 만약 그렇다면 eval를 통해 실행하고 DBIx :: 클래스 경우

dbicdump <options> dbi:Oracle:blah username password \ 
'{ on_connect_do => sub { shift->_dbh->{LongReadLen} = 123456 }' 

dbicdump 인식 : : Storage :: DBI는 연결이있을 때마다 핸들에 대해 SQL 또는 임의의 코드를 실행할 수있는 on_connect_do을 가지고 있습니다. 이 경우 LongReadLen attr을 원하는 값으로 설정하는 데 사용할 수 있습니다.

1-arg 버전의 dbicdump를 사용하여 구성 파일에서 옵션을 얻는 경우 로더가 Config::Any::Perl이 아닌 이상 운이 좋지 않을 수 있습니다.이 경우에는 다음과 같이 동일한 방식으로 하위를 지정할 수 있습니다. connect_info/options/on_connect_do 키.

+0

시도했지만 작동하지 않습니다. 나는 심지어 '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