【问题标题】:Strange Oracle error: Identifier too long ORA-00972奇怪的 Oracle 错误:标识符太长 ORA-00972
【发布时间】:2011-11-01 10:02:32
【问题描述】:

我在使用 ORACLE 10g 时遇到了这个问题。我在这里(ora-00972 identifier is too long oracle 10g)阅读了有关堆栈溢出的问题的答案,但它们对我不起作用。也许我的情况不同。

现在我有了这些表名:WIMAX_TRAFFIC_STATSWIMAX_RADIO_STATS。当我尝试通过带有 Erlang/OTP 的 ODBC 连接将数据插入其中时,出现错误:

{error,"[DataDirect][ODBC Oracle Wire Protocol driver][Oracle]ORA-00972:
标识符太长 SQLSTATE IS: HY000"} 所以,我搜索了谷歌,发现答案说我的表名可能太长了。所以我在下面做了这个并再次尝试:
SQL> ALTER TABLE WIMAX_RADIO_STATS 重命名为 WR;
表已更改。
SQL> ALTER TABLE WIMAX_TRAFFIC_STATS 重命名为 WT;
表已更改。
我仍然遇到同样的错误。其他消息来源说这可能是我在某些专栏中写的数据。我的表定义如下: SQL> 描述 WT; 名称空?类型 ----------------------------------------- -------- - ---------------- 日期日期 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 个字符的字符串,但仍然出现此错误。 一些身体帮助,请!

编辑

SAMPLE查询请求如下:

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 字段的默认设置为sysdate

【问题讨论】:

  • 请提供错误的查询和数据。

标签: sql oracle erlang odbc


【解决方案1】:

您使用了错误的引号。

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.

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-02-16
    • 1970-01-01
    • 2012-07-09
    • 2012-12-22
    • 1970-01-01
    • 2020-07-15
    • 1970-01-01
    • 2017-04-09
    相关资源
    最近更新 更多