2011-11-01 327 views
8

Me he enfrentado a este problema al trabajar con ORACLE 10g. Leí las respuestas dadas a esta pregunta aquí (ora-00972 identifier is too long oracle 10g) en el desbordamiento de la pila, pero no me han funcionado. Tal vez mi situación es diferente.
Extraño error de Oracle: Identificador demasiado largo ORA-00972

Ahora tenía estos nombres de tabla: WIMAX_TRAFFIC_STATS y WIMAX_RADIO_STATS. Cuando traté de insertar datos en ellos a través de una conexión ODBC con Erlang/OTP, recibí el error:

 
{error,"[DataDirect][ODBC Oracle Wire Protocol driver][Oracle]ORA-00972: 
identifier is toolong SQLSTATE IS: HY000"}
Por lo tanto, busqué en google y encontré respuestas que dicen que tal vez los nombres de mi tabla son demasiado largos. Así que hice esto a continuación e intenté de nuevo:
 
SQL> ALTER TABLE WIMAX_RADIO_STATS RENAME TO WR; 
Table altered. 
SQL> ALTER TABLE WIMAX_TRAFFIC_STATS RENAME TO WT; 
Table altered. 
Todavía recibo el mismo error. Otras fuentes dicen que podrían ser los datos que estoy escribiendo en algunas de mis columnas. Las definiciones de mi tabla están a continuación:

 

SQL> DESCRIBE WT; 
Name          Null? Type 
----------------------------------------- -------- ----------------- 
SDATE            DATE 
ELEMENT_TYPE          VARCHAR2(50) 
MANAGED_ELEMENT         VARCHAR2(50) 
USER_LABEL           VARCHAR2(200) 
JOB_ID            VARCHAR2(50) 
MEAS_TYPE           VARCHAR2(50) 
MEAS_VALUE           VARCHAR2(50) 

Ninguno de los valores de datos que escribo es más largo que la definición de longitud de columna. Realmente me pregunto. Estoy intentando escribir cadenas que tienen menos de 10 caracteres de longitud en la tabla, pero que aún obtienen este error. ¡Alguna ayuda para el cuerpo, por favor!

EDITAR

solicitud de consulta de ejemplo es el siguiente:

 
INSERT INTO WT(element_type,managed_element,user_label,job_id,meas_type,
meas_value) VALUES("BreezeMAX MBS",
"SubNetwork=ASN,MeContext=,ManagedElement=MBS.172.17.9.9",
"BMAX-Shoal2[MTN-Egate]",
"99297","rbMngmntPortPacketsDiscardedOnRx","0");

El campo SDATE tiene un valor predeterminado establecido como sysdate

+2

Sírvanse facilitar la consulta errónea y datos. –

Respuesta

18

Estás usando las cotizaciones equivocadas.

VALUES('BreezeMAX MBS', 
    ^   ^

Demostración:

SQL> create table t (a varchar(100)); 
Table created. 

SQL> insert into t(a) values ("qasdqsdqsdqsdqsdqsdqsdlmqmsldqsmldqsmldq"); 
insert into t(a) values ("qasdqsdqsdqsdqsdqsdqsdlmqmsldqsmldqsmldq") 
         * 
ERROR at line 1: 
ORA-00972: identifier is too long 

SQL> insert into t(a) values ('qasdqsdqsdqsdqsdqsdqsdlmqmsldqsmldqsmldq'); 
1 row created. 
Cuestiones relacionadas