2011-11-01 100 views
8

ORACLE 10gを使用しているときにこの問題が発生しました。私はスタックオーバーフローでこの質問(ora-00972 identifier is too long oracle 10g)に与えられた答えを読んだが、私のために働いていない。多分私の状況は違うでしょう。
奇妙なOracleエラー:識別子が長すぎますORA-00972

私はこれらのテーブル名:WIMAX_TRAFFIC_STATSWIMAX_RADIO_STATSを持っていました。 Erlang/OTPのODBC接続でデータを挿入しようとしたときにエラーが発生しました:

 
{error,"[DataDirect][ODBC Oracle Wire Protocol driver][Oracle]ORA-00972: 
identifier is toolong SQLSTATE IS: HY000"}
Googleで検索したところ、テーブル名が長すぎると回答しました。だから私は下でこれをやり直した:
 
SQL> ALTER TABLE WIMAX_RADIO_STATS RENAME TO WR; 
Table altered. 
SQL> ALTER TABLE WIMAX_TRAFFIC_STATS RENAME TO WT; 
Table altered. 
私はまだ同じエラーが発生しています。他の情報源では、私が自分のコラムの一部に書いているデータになる可能性があります。私のテーブルの定義は以下の通りです:

 

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) 

私が書いたデータの値はどれも、カラムの長さの定義よりも長くありません。私は本当に不思議です。テーブルに10文字未満の文字列を書き込もうとしていますが、まだこのエラーが発生しています。 体の一部の助けてください!次のように

EDIT

サンプルクエリ要求は、次のとおりです。

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

SDATEフィールドは、あなたが間違った引用符を使用している

+2

誤ったクエリやデータを提供してください。 –

答えて

18

sysdateとして設定されたデフォルトを持っています。

VALUES('BreezeMAX MBS', 
    ^   ^

デモ:

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. 
関連する問題