[SOLVED] DTD : compilation error ORA-00904

Author: lecj@real.lu (lecj)

 The script below (creation of UCDTYP) don't refer to UDTDREF and the compilation of DTD needs this field ! who has right ? the script or the compilator ? Thanks, Jean-Claude   Server: I/O function: O, mode: 0, on file/table: UCDTYP Server: ORA-00904: "UDTDREF": invalid identifier ORACLE Driver Error [-52]: Open driver request failed.   create table ucdtyp ( utimestamp timestamp without time zone null, ucompstamp timestamp without time zone null, udtdname character(32) not null, umodelname character(32) not null, uvers character(12) null, udescr character(25) null, udtdtype character(3) null, udtdfile character varying(8023) null, constraint ucdtyp_pk primary key (udtdname,umodelname) );

9 Comments

  1. Jean-Claude, The mentioned problem is usually caused by an outdated Meta Dictionary (from Uniface version < 9). You can import the correct Meta Dictionary (e.g.) using the following IDF command line switch: /ins meta- since Uniface version 9.6.06 (Service Pack MX05) the Migrate Repository Utility should detect an old Meta Dictionary and overwrite it with the Uniface 9 definitions. After the import you need to analyze the Meta Dictionary models (e.g. using the command line switch /con). In case an UDESC.URR exists then you need to delete and recreate it. After you've updated the Meta Dictionary the DTDs should compile again without errors. Please not that the mentioned problem should not occur when using Standardized Deployment with the IDF by using the ASN setting $SEARCH_RESOURCES = resources_first or resources_only, and adding the usys:usys.uar and usys:uidf.uar to the [RESOURCES] locations. Hope this helps. Kind regards, Daniel Iseli Uniface Support


    Author: diseli (daniel.iseli@uniface.com)
  2. Hi Jean-Claude, Taking the DICT model from Uniface 9.7.02 as a reference, I see more fields after the field 'udtdfile': udtdref ucomment udefinition udefmap These are all database fields, according to the DICT model. Checking the installation scripts for Oracle I see the same as you see: CREATE TABLE "UCDTYP"( "UTIMESTAMP" DATE, "UCOMPSTAMP" DATE, "UDTDNAME" CHAR(32), "UMODELNAME" CHAR(32), "UVERS" CHAR(12), "UDESCR" CHAR(25), "UDTDTYPE" CHAR(3), "UDTDFILE" CLOB, CONSTRAINT "UCDTYPP1" PRIMARY KEY( "UDTDNAME", "UMODELNAME" )) / CREATE TABLE "OUCDTYP"( "UDTDNAME" CHAR(32), "UMODELNAME" CHAR(32), "SEGM" CHAR(4), "DATA" CLOB, CONSTRAINT "OUCDTYPP1" PRIMARY KEY( "UDTDNAME", "UMODELNAME", "SEGM" )) / Checking an installation script for another database flavour (for instance Sybase), I see the same fields being created. The udtdfile, udtdref, ucomment, udefinition and udefmap are all part of the 'data' field of the 'oucdtyp' overflow table, being separated by a separation character. My best guess for now is that it has something to do with you overflow table, the "OUCDTYP" table in the create script above.

    1. Is this overflow table created in your database?
    2. Have the referential constraints from the "OUCDTYP" overflow table towards the "UCDTYP" base table been created properly?
    3. Has any kind of data migration of your repository taken place?

    Best regards, Arjen (After submitting my answer, I now see that my answer and Daniël's answer have been created in parallel)


    Author: Arjen van Vliet (arjen.van.vliet@uniface.com)
  3. Hi Arjen, what you describe is "the old overflow logic": pack all variable "C*" fields (with the separator you mentioned or XMLish) into one database field named after the first variable field. If you need more space, place the segments in the overflow table. This overflow can be disabled by connector parameters. Hope to see you on the webcast thursday morning, Uli


    Author: ulrich-merkel (ulrichmerkel@web.de)
  4. Good morning Uli, My colleague Andy Holzman is presenting on Thursday, but I will be sitting next to him, so yes, we will 'see' each other then. Cheers, Arjen 


    Author: Arjen van Vliet (arjen.van.vliet@uniface.com)
  5. Good morning Daniel, Thanks a lot for your answer ! For info, we are using U9.7.01.01 (1020_1). Our previous version is U9.5.01.02 (E110 0920_1) the command '/ins meta' updates several Uniface tables, but not UCDTYP. And the error is still the same (ORA-00904) Jean-Claude    8078 - Copy from 'usys:umeta.xml' to 'IDF:UGFIF.DICT'. 8074 - Copied from 'usys:umeta.xml' to 'IDF:UGFIF.DICT' total records/rows 121. 8078 - Copy from 'usys:umeta.xml' to 'IDF:UGFSYN.DICT'. 8074 - Copied from 'usys:umeta.xml' to 'IDF:UGFSYN.DICT' total records/rows 91. 8078 - Copy from 'usys:umeta.xml' to 'IDF:UGFLAY.DICT'. 8074 - Copied from 'usys:umeta.xml' to 'IDF:UGFLAY.DICT' total records/rows 7. 8078 - Copy from 'usys:umeta.xml' to 'IDF:UCSCH.DICT'. 8074 - Copied from 'usys:umeta.xml' to 'IDF:UCSCH.DICT' total records/rows 4. 8078 - Copy from 'usys:umeta.xml' to 'IDF:UCTABLE.DICT'. 8074 - Copied from 'usys:umeta.xml' to 'IDF:UCTABLE.DICT' total records/rows 58. 8078 - Copy from 'usys:umeta.xml' to 'IDF:UCGROUP.DICT'. 8074 - Copied from 'usys:umeta.xml' to 'IDF:UCGROUP.DICT' total records/rows 93. 8078 - Copy from 'usys:umeta.xml' to 'IDF:UCFIELD.DICT'. 8074 - Copied from 'usys:umeta.xml' to 'IDF:UCFIELD.DICT' total records/rows 2491. 8078 - Copy from 'usys:umeta.xml' to 'IDF:UCKEY.DICT'. 8074 - Copied from 'usys:umeta.xml' to 'IDF:UCKEY.DICT' total records/rows 79. 8078 - Copy from 'usys:umeta.xml' to 'IDF:UCRELSH.DICT'. 8074 - Copied from 'usys:umeta.xml' to 'IDF:UCRELSH.DICT' total records/rows 57.


    Author: lecj (lecj@real.lu)
  6. Good morning Jean-Claude, Have you done the migration from  U9.5.01.02 to U9.7.01.01 by export from 9.5 and import to 9.7? And have you checked the box "Exclude Uniface defaults" when exporting from 9.5? Seems to me that accidentily the 9.5 defaults were left in the export and were accidentally imported into 9.7, while the way to go with migrations is leaving the 'old' defaults out of the export and generate new defaults in compliance the new Uniface version. Hope this helps, Arjen


    Author: Arjen van Vliet (arjen.van.vliet@uniface.com)
  7. lecj said Good morning Daniel, Thanks a lot for your answer ! For info, we are using U9.7.01.01 (1020_1). Our previous version is U9.5.01.02 (E110 0920_1) the command '/ins meta' updates several Uniface tables, but not UCDTYP. And the error is still the same (ORA-00904) Jean-Claude 

    Jean-Claude, Thanks for the info. But did you do an Analyze Model after importing the Meta Dictionary for Uniface 9.7 and made sure that no old .URR files (e.g. UDESC.URR ir UANA.URR) exist anymore? In case you still get the ORA-00904 error when compiling the DTDs then the IDF still is using outdated table definitions for UCDTYP. Alternatively you could also switch to the standardized approach and set $SEARCH_RESOURCES to either resources_only or resources_first. Please make sure that $RESOURCE_OUTPUT is set in the ASN that is used by the IDF and that the following resources are specified in the [RESOURCES] section:

    [RESOURCES]
    usys:uidf.uar
    usys:usys.uar
    usys:usysicon.uar

    And it's correct that importing the Meta Dictionary will not update UCDTYP table. But the import will make sure that the correct entity definitions (e.g. for UCDTYP.DICT) are present in the repository. Hope this helps. Daniel


    Author: diseli (daniel.iseli@uniface.com)
  8. Hi Daniel,   The compilation of DTD's works after the removing of occurences concerning UCDTYP from the Oracle table ULANA. (These occurences had a reference to the field UDTDREF)   Thanks to all for your support. This topic is solved and can be closed. Jean-Claude


    Author: lecj (lecj@real.lu)
  9. Hi Jean-Claude, Thanks for the update. And it's good to hear that you could resolve the problem. Daniel


    Author: diseli (daniel.iseli@uniface.com)