wal has asked for the wisdom of the Perl Monks concerning the following question:

hi there i get an truncation error on a field but don't know why
DBD::Oracle::st fetchall_arrayref failed: ORA-24345: A Truncation or n +ull fetch error occurred (DBD ERROR: ORA-01406 error on field 8 of 12 +2, ora_type 1) [for Statement "SELECT "ADVERTISEMENT_ID","DELIVERY_GR +OUP_ID","PUBLISHING_GROUP_ID","ADDRESS_ID","PERSON_ID","REF_PROPERTY" +,"REF_HOUSE","REF_OBJECT","VOLUME","OBJECT_CATEGORY","OBJECT_TYPE","D +ISTANCE_FROM_PUBLIC_TRANSPORT","DISTANCE_FROM_SHOPS","DISTANCE_FROM_K +INDERGARTEN","DISTANCE_FROM_SCHOOL","DISTANCE_FROM_SCHOOL2",to_char(" +PUBLISH_UNTIL", 'YYYY-MM-DD HH24:MI:SS'),"FLOOR","NUMBER_ROOMS","NUMB +ER_APPARTMENTS","SURFACE_LIVING","SURFACE_PROPERTY","SURFACE_USABLE", +"YEAR_BUILT","WITH_VIEW","FIRE_PLACE","CABLE_TV","LIFT","FAMILY","PAR +KING","GARAGE","ROOFFLOOR","BALCONY","SITUATION","TITLE",to_char("AVA +ILABLE_FROM", 'YYYY-MM-DD HH24:MI:SS'),"VISIT_NAME","VISIT_PHONE","VI +SIT_EMAIL","VISIT_REMARK","AD_DESCRIPTION","AD_DESCRIPTION2","RENT_NE +T","RENT_EXTRA","PRICE_UNIT","SELLING_PRICE","OFFER_TYPE","SENDER_ID" +,"CURRENCY","YIELD","CONTACT_PERSON","TARGET_DESTINATION","DATA_DELIV +ERER_ADDRESS_ID","URL",to_char("TIMESTAMP", 'YYYY-MM-DD HH24:MI:SS'), +"AD_LOGO",to_char("CREATED", 'YYYY-MM-DD HH24:MI:SS'),"BILLING_ADDRES +S_ID","BILLING_NUMBER","DISTANCE_FROM_MOTORWAY","ROOM_HEIGHT","HALL_H +EIGHT","MAX_FLOOR_LOADING","CARRYING_CAPACITY_CRANE","CARRYING_CAPACI +TY_ELEVATOR","ISDN","WHEELCHAIR_ACCESS","ANIMAL_ALLOWED","RAMP","LIFT +ING_PLATFORM","RAILWAY_TERMINAL","RESTROOMS","WATER_SUPPLY","SEWAGE_S +UPPLY","POWER_SUPPLY","GAS_SUPPLY","MUNICIPAL_INFO","OBJECT_REFERENZ" +,"FTP_DIRECTORY","FILE_NAME",to_char("FILE_DATE", 'YYYY-MM-DD HH24:MI +:SS'),to_char("RECORD_DATE", 'YYYY-MM-DD HH24:MI:SS'),"AGENCY_ID","BU +ILT_NEW","BUILT_OLD","CORNER_HOUSE","GARDENHOUSE","HIGHFLOOR","MIDDLE +_HOUSE","MINERGY_BUILT","MINERGY_CERTIFIED","NUMBER_FLOORS","PLOT_CON +NECTED","ROOMMATE","SWIMMINGPOOL","UNDER_LAW","UNDER_ROOF","WORLD","Y +EAR_RENOVATED","AD_LOGO_2","AD_URL_TITLE","CONTACT_FORM","DEFAULT_CON +TACT_FORM_TYPE","VERSION","OBJECT_URL_DELIVERER","MINIMUM_SURFACE_USA +BLE","CO_OWNERSHIP_NUMERATOR","CO_OWNERSHIP_DENOMINATOR","GEAK_CLASS" +,"HEATING_SYSTEM","HEATING_USAGE_PER_YEAR","SURFACE_LIVING_BUILDING", +"EKZ_LOWER","EKZ_UPPER","SHOW_ENERGY_RATING","HIDE_EVALO_RATING","ENE +RGY_DOC_TYPE_1","ENERGY_DOC_FILENAME_1","ENERGY_DOC_FILENAME_ORIG_1", +"ENERGY_DOC_TYPE_2","ENERGY_DOC_FILENAME_2","ENERGY_DOC_FILENAME_ORIG +_2" FROM "HOMEGATE"."ADVERTISEMENT_LOADER" a"] at /root/perl5/lib/per +l5/Ora2Pg.pm line 10280. ERROR: ORA-24345: A Truncation or null fetch error occurred (DBD ERROR +: ORA-01406 error on field 8 of 122, ora_type 1)
can anybody help me? thanks

Replies are listed 'Best First'.
Re: dbd::oracle truncation error
by Corion (Patriarch) on May 30, 2016 at 11:55 UTC

    Most likely, the error message is true:

    ORA-24345: A Truncation or null fetch error occurred (DBD ERROR: ORA-0 +1406 error on field 8 of 122, ora_type 1

    Have you looked at field 8? Maybe it gets truncated.

    Also, Oracle error numbers are often quite googleable. Have you looked at the error description in the Oracle documentation?

Re: dbd::oracle truncation error
by shmem (Chancellor) on May 30, 2016 at 12:01 UTC

    Let me google that for you... there. Hope that helps.

    perl -le'print map{pack c,($-++?1:13)+ord}split//,ESEL'
      I googled a lot I'm using a tool ora2pg which takes the data in oracle and move it to postgres in oracle this is a varchar(80 byte) field PG ref_property character varying(80), ref_house character varying(80), ref_object character varying(80) so I don't know why it throws this exception
        maybe I found something strange the select lenght(ref_object) = 80 and the lengthb(ref_object) = 80 the field is varchar2(80 bytes) strange is that the length and lengthb gives the same length but ref_object has some special characters? so how can the length be equal?