2011-11-01 33 views
8

Tôi đã gặp sự cố này khi làm việc với ORACLE 10g. Tôi đã đọc câu trả lời cho câu hỏi này tại đây (ora-00972 identifier is too long oracle 10g) trên tràn ngăn xếp nhưng chúng chưa hoạt động đối với tôi. Có lẽ tình hình của tôi khác.
Lỗi Oracle lạ: Mã định danh quá dài ORA-00972

Bây giờ tôi đã có các tên bảng này: WIMAX_TRAFFIC_STATSWIMAX_RADIO_STATS. Khi tôi cố gắng chèn dữ liệu vào chúng thông qua kết nối ODBC với Erlang/OTP, tôi gặp lỗi:

 
{error,"[DataDirect][ODBC Oracle Wire Protocol driver][Oracle]ORA-00972: 
identifier is toolong SQLSTATE IS: HY000"}
Vì vậy, tôi đã tìm kiếm trên google và tìm thấy câu trả lời cho rằng có thể tên bảng của tôi quá dài. Vì vậy, tôi đã làm điều này dưới đây và thử lại:
 
SQL> ALTER TABLE WIMAX_RADIO_STATS RENAME TO WR; 
Table altered. 
SQL> ALTER TABLE WIMAX_TRAFFIC_STATS RENAME TO WT; 
Table altered. 
Tôi vẫn gặp lỗi tương tự. Các nguồn khác sya rằng nó có thể là dữ liệu tôi đang viết trong một số cột của tôi. Định nghĩa bảng của tôi ở đây dưới đây:

 

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) 

Không có giá trị dữ liệu nào tôi viết dài hơn độ dài cột. Tôi thực sự tự hỏi. Đang cố viết các chuỗi có độ dài dưới 10 ký tự trong bảng nhưng vẫn nhận được lỗi này. Một số trợ giúp cơ thể, xin vui lòng!

EDIT

yêu cầu truy vấn MẪU là như sau:

 
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");

Trường SDATE có một mặc định thiết lập như sysdate

+2

Vui lòng cung cấp các truy vấn có sai sót và dữ liệu. –

Trả lời

18

Bạn đang sử dụng các dấu ngoặc kép sai.

VALUES('BreezeMAX MBS', 
    ^   ^

Demo:

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. 
Các vấn đề liên quan