Sql 奇怪的Oracle错误:标识符太长ORA-00972
我在使用ORACLE 10g时遇到过这个问题。我在这里()阅读了关于堆栈溢出的这个问题的答案,但它们对我不起作用。也许我的情况不同。Sql 奇怪的Oracle错误:标识符太长ORA-00972,sql,oracle,erlang,odbc,Sql,Oracle,Erlang,Odbc,我在使用ORACLE 10g时遇到过这个问题。我在这里()阅读了关于堆栈溢出的这个问题的答案,但它们对我不起作用。也许我的情况不同。 现在我有了这些表名:WIMAX\u-TRAFFIC\u-STATS和WIMAX\u-RADIO\u-STATS。当我尝试通过与的ODBC连接将数据插入其中时,出现错误: {error,"[DataDirect][ODBC Oracle Wire Protocol driver][Oracle]ORA-00972: identifier is toolong SQL
现在我有了这些表名:
WIMAX\u-TRAFFIC\u-STATS
和WIMAX\u-RADIO\u-STATS
。当我尝试通过与的ODBC连接将数据插入其中时,出现错误:
{error,"[DataDirect][ODBC Oracle Wire Protocol driver][Oracle]ORA-00972: identifier is toolong SQLSTATE IS: HY000"} {错误,“[DataDirect][ODBC Oracle Wire Protocol driver][Oracle]ORA-00972:
标识符为toolong SQLSTATE为:HY000”} 所以,我搜索了谷歌,发现答案是我的表名可能太长了。所以我在下面做了这个,然后再试一次: SQL> ALTER TABLE WIMAX_RADIO_STATS RENAME TO WR; Table altered. SQL> ALTER TABLE WIMAX_TRAFFIC_STATS RENAME TO WT; Table altered. SQL>将表WIMAX_RADIO_STATS重命名为WR; 桌子改了。 SQL>将表WIMAX_TRAFFIC_STATS重命名为WT; 桌子改了。 我仍然得到同样的错误。其他消息来源说这可能是我在一些专栏中写的数据。我的表格定义如下: 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) SQL>描述WT; 名称为空?类型 ----------------------------------------- -------- ----------------- 日期 元件类型VARCHAR2(50) 托管元素VARCHAR2(50) 用户标签VARCHAR2(200) 工作ID VARCHAR2(50) MEAS_型VARCHAR2(50) 测量值VARCHAR2(50) 我在那里写的数据值没有一个比列长度定义长。我真想知道。我试图在表中写入长度小于10个字符的字符串,但仍然出现此错误。请帮个忙 编辑
查询请求示例如下: 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"); 在WT(元素类型、托管元素、用户标签、作业id、测量类型、测量值)值中插入(“BreezeMAX MBS”、“SubNetwork=ASN、MeContext=、ManagedElement=MBS.172.17.9.9”、“BMAX-Shoal2[MTN Egate]”、
“99297”、“RBMNGMNTPortpacketsDiscaredonRx”、“0”);
SDATE字段的默认设置为
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.