10 Stimmen

DBMS_DATA_MINING.CREATE_MODEL verursacht "ORA-40103: ungültige case-id-Spalte: TID" auf 11.2.0.1.0 64b, aber auf 10g OK

Ich habe ein Problem mit DBMS_DATA_MINING.CREATE_MODEL in Version 11.2. Auf 10g dieser Code unten funktioniert OK, und ich bin ziemlich sicher, dass auf 11.1 es auch funktioniert.

CREATE OR REPLACE VIEW "SH"."ITEMS" AS SELECT PROD_ID AS item FROM SALES GROUP BY PROD_ID;
CREATE OR REPLACE VIEW "SH"."TRANSACTIONS" AS SELECT "SH"."SALES"."PROD_ID" AS item , "SH"."SALES"."CUST_ID" tid FROM "SH"."SALES" where cust_id between 100001 AND 104500 GROUP BY cust_id, prod_id;
CREATE TABLE "SH"."AR_SETTINGS" ( "SETTING_NAME" VARCHAR2(30 BYTE), "SETTING_VALUE" VARCHAR2(128 BYTE) );
INSERT INTO SH.AR_SETTINGS (SETTING_NAME, SETTING_VALUE) VALUES ('ASSO_MAX_RULE_LENGTH', '6' );
INSERT INTO SH.AR_SETTINGS (SETTING_NAME, SETTING_VALUE) VALUES( 'ASSO_MIN_CONFIDENCE', TO_CHAR(0.7));
INSERT INTO SH.AR_SETTINGS (SETTING_NAME, SETTING_VALUE) VALUES( 'ASSO_MIN_SUPPORT', TO_CHAR(0.1));

BEGIN DBMS_DATA_MINING.CREATE_MODEL( model_name => 'AR_sh', mining_function => DBMS_DATA_MINING.ASSOCIATION, data_schema_name => 'sh', data_table_name => 'transactions', case_id_column_name => 'tid', settings_schema_name => 'sh', settings_table_name => 'ar_settings'); END;

Ursachen:

ORA-40103: invalid case-id column: TID
ORA-06512: at "SYS.DBMS_DATA_MINING", line 1779
ORA-06512: at line 1
40103. 00000 - "invalid case-id column: %s"
*Cause: The column designated as case-id is not of one of CHAR, VARCHAR2,
NUMBER data type. Case-id columns of type CHAR and VARCHAR2 must
be of length less than or equal to 128 bytes.
*Action: Change the schema of your input data to supply a case-id column
of appropriate data type and/or length.

um sicher zu sein:

describe "SH"."TRANSACTIONS"
Name Null Type 
--
ITEM NOT NULL NUMBER 
TID NOT NULL NUMBER

y

select * from v$version;

zurück:

Oracle Database 11g Enterprise Edition Release 11.2.0.1.0 - 64bit Production 
PL/SQL Release 11.2.0.1.0 - Production 
CORE    11.2.0.1.0  Production 
TNS for 64-bit Windows: Version 11.2.0.1.0 - Production 
NLSRTL Version 11.2.0.1.0 - Production

Der Beispielcode von dmardemo.sql verursacht denselben Fehler. Ich weiß nicht, was falsch ist. Bitte helfen Sie mir.

4voto

Jon Heller Punkte 33222

Ihr Code und die Beispiele funktionieren beide bei mir. Ich benutze auch 11.2.0.1.0, aber ich benutze 32-Bit statt 64-Bit.

Ich bin mir nicht sicher, was das bedeutet. Vielleicht gab es ein Problem mit Ihrer Installation? Schauen Sie doch mal unter Überprüfen Ihrer Data-Mining-Installation .

2voto

Mike Punkte 149

Oder vielleicht die Reichweite where cust_id between 100001 AND 104500 zwischen den Versionen geändert?

2voto

tbone Punkte 14490

Es ist nur eine Vermutung, aber ist es möglich, dass ein Synonym für TRANSACTIONS nicht auf SH.TRANSACTIONS verweist, sondern auf eine andere Tabelle? Ich weiß, dass Sie den Schemanamen SH angeben, aber es kann trotzdem zu Problemen führen, wenn dies der Fall ist (beschreiben Sie TRANSACTIONS, um zu sehen).

1voto

zacheusz Punkte 8520

Vielen Dank für die Hilfe. Nach ein paar Systemneustarts begann es zu funktionieren. Ohne jeden Grund (keine Konfigurationsänderungen).

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X