首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何查找"ORA-01438:值大于此列允许的指定精度“的错误列

如何查找"ORA-01438:值大于此列允许的指定精度“的错误列
EN

Database Administration用户
提问于 2023-02-07 12:16:45
回答 1查看 715关注 0票数 1

我得到了这个错误ORA-01438: value larger than specified precision allowed for this column,但我不知道哪一列。如何找到包含错误的列?

代码语言:javascript
运行
复制
INSERT INTO plants(created_at,updated_at,published,title,id_old,simplified_name,code,dp1,dh1,dh2,dh4,field9,migrate,lives_in_ro,is_endemic,is_international,is_national,priority,id_synonim,id_group,genus,id_tax_code,guid,vernacular_name,is_sensitive,id_red_list_codes,id_owner,insert_date,update_date,is_in_zoo,is4a,is5a,is5b,is4b,is_cites,is_bdv,is_ber,is_bon,is_new_record,is_for_derogation,id_inserter,berna1,bonn1,anexa_bonn,anexa_berna,berna2,berna3,bonn2,a17code,field47,field48,field49,taxup,incerta,spontan,cultivat,invaziva,al,turbarie,lr,l_rosie,lista_rosie,taxon,increngatura,clasa,ordin,familia,gen,specia,autor,subspecia,autor_ssp,varietatea,autor_var,forma,autor_for,ngexc,ngcateg,biblio,transferat,submited_checked
) VALUES(TO_DATE(sysdate, 'yyyy/mm/dd hh24:mi:ss'), TO_DATE(sysdate, 'yyyy-mm-dd hh24:mi:ss'), 0, 'Euclasta perisalis', '99012', 'perisalis', '', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '306200', '1', 'Euclasta', '200681', '8615DFE9-C28A-4240-B3A2-79D97ECCD41C', '', '0', '', '','00:00,0', '', '0', '0','0', '0','0', '0', '0', '0', '0', '0', '0', 'D8446A30-8B8B-4059-AE3F-86AF0ABA39B8', '0', '0', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '0', '', '', '', 'Arthropoda', 'Insecta', 'Lepidoptera', 'Crambidae', 'Euclasta', 'varii', '', '', '', '', '', '', '', '', '', '', '', '0')

这是DLL

代码语言:javascript
运行
复制
  DDL for Table PLANTS
--------------------------------------------------------

  CREATE TABLE "SYSTEM"."PLANTS" 
   (    "ID" NUMBER(19,0), 
    "DELETED_AT" TIMESTAMP (6), 
    "CREATED_AT" TIMESTAMP (6), 
    "UPDATED_AT" TIMESTAMP (6), 
    "PUBLISHED" CHAR(1 BYTE) DEFAULT '0', 
    "TITLE" VARCHAR2(200 BYTE), 
    "DESCRIPTION" CLOB, 
    "ID_OLD" NUMBER(10,0), 
    "SIMPLIFIED_NAME" VARCHAR2(200 BYTE), 
    "CODE" VARCHAR2(100 BYTE), 
    "DP1" NUMBER(3,0), 
    "DH1" NUMBER(3,0), 
    "DH2" NUMBER(3,0), 
    "DH4" NUMBER(3,0), 
    "FIELD9" NUMBER(3,0), 
    "MIGRATE" NUMBER(3,0), 
    "LIVES_IN_RO" NUMBER(3,0), 
    "IS_ENDEMIC" NUMBER(3,0), 
    "IS_INTERNATIONAL" NUMBER(3,0), 
    "IS_NATIONAL" NUMBER(3,0), 
    "PRIORITY" NUMBER(3,0), 
    "ID_SYNONIM" NUMBER(10,0), 
    "ID_GROUP" NUMBER(3,0), 
    "GENUS" VARCHAR2(100 BYTE), 
    "ID_TAX_CODE" NUMBER(5,0), 
    "GUID" VARCHAR2(200 BYTE), 
    "VERNACULAR_NAME" VARCHAR2(200 BYTE), 
    "IS_SENSITIVE" NUMBER(3,0), 
    "ID_RED_LIST_CODES" VARCHAR2(200 BYTE), 
    "ID_OWNER" VARCHAR2(200 BYTE), 
    "INSERT_DATE" VARCHAR2(200 BYTE), 
    "UPDATE_DATE" VARCHAR2(200 BYTE), 
    "IS_IN_ZOO" NUMBER(3,0), 
    "IS4A" NUMBER(3,0), 
    "IS5A" NUMBER(3,0), 
    "IS5B" NUMBER(3,0), 
    "IS4B" NUMBER(3,0), 
    "IS_CITES" NUMBER(3,0), 
    "IS_BDV" NUMBER(3,0), 
    "IS_BER" NUMBER(3,0), 
    "IS_BON" NUMBER(3,0), 
    "IS_NEW_RECORD" NUMBER(3,0), 
    "IS_FOR_DEROGATION" NUMBER(3,0), 
    "ID_INSERTER" VARCHAR2(200 BYTE), 
    "BERNA1" NUMBER(3,0), 
    "BONN1" NUMBER(3,0), 
    "ANEXA_BONN" VARCHAR2(200 BYTE), 
    "ANEXA_BERNA" VARCHAR2(200 BYTE), 
    "BERNA2" NUMBER(3,0), 
    "BERNA3" NUMBER(3,0), 
    "BONN2" NUMBER(3,0), 
    "A17CODE" VARCHAR2(200 BYTE), 
    "FIELD47" VARCHAR2(200 BYTE), 
    "FIELD48" VARCHAR2(200 BYTE), 
    "FIELD49" VARCHAR2(200 BYTE), 
    "TAXUP" VARCHAR2(100 BYTE), 
    "INCERTA" VARCHAR2(100 BYTE), 
    "SPONTAN" VARCHAR2(100 BYTE), 
    "CULTIVAT" VARCHAR2(100 BYTE), 
    "INVAZIVA" VARCHAR2(100 BYTE), 
    "AL" VARCHAR2(100 BYTE), 
    "TURBARIE" VARCHAR2(100 BYTE), 
    "LR" VARCHAR2(100 BYTE), 
    "L_ROSIE" VARCHAR2(100 BYTE), 
    "LISTA_ROSIE" VARCHAR2(100 BYTE), 
    "TAXON" VARCHAR2(200 BYTE), 
    "INCRENGATURA" VARCHAR2(200 BYTE), 
    "CLASA" VARCHAR2(200 BYTE), 
    "ORDIN" VARCHAR2(200 BYTE), 
    "FAMILIA" VARCHAR2(200 BYTE), 
    "GEN" VARCHAR2(200 BYTE), 
    "SPECIA" VARCHAR2(200 BYTE), 
    "AUTOR" VARCHAR2(200 BYTE), 
    "SUBSPECIA" VARCHAR2(200 BYTE), 
    "AUTOR_SSP" VARCHAR2(200 BYTE), 
    "VARIETATEA" VARCHAR2(200 BYTE), 
    "AUTOR_VAR" VARCHAR2(200 BYTE), 
    "FORMA" VARCHAR2(200 BYTE), 
    "AUTOR_FOR" VARCHAR2(200 BYTE), 
    "NGEXC" VARCHAR2(100 BYTE), 
    "NGCATEG" VARCHAR2(100 BYTE), 
    "BIBLIO" VARCHAR2(100 BYTE), 
    "TRANSFERAT" NUMBER(3,0), 
    "SUBMITED_CHECKED" NUMBER(3,0)
   ) PCTFREE 10 PCTUSED 40 INITRANS 1 MAXTRANS 255 
 NOCOMPRESS LOGGING
  STORAGE(INITIAL 65536 NEXT 1048576 MINEXTENTS 1 MAXEXTENTS 2147483645
  PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1
  BUFFER_POOL DEFAULT FLASH_CACHE DEFAULT CELL_FLASH_CACHE DEFAULT)
  TABLESPACE "SYSTEM" 
 LOB ("DESCRIPTION") STORE AS BASICFILE (
  TABLESPACE "SYSTEM" ENABLE STORAGE IN ROW CHUNK 8192 RETENTION 
  NOCACHE LOGGING 
  STORAGE(INITIAL 65536 NEXT 1048576 MINEXTENTS 1 MAXEXTENTS 2147483645
  PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1
  BUFFER_POOL DEFAULT FLASH_CACHE DEFAULT CELL_FLASH_CACHE DEFAULT)) ;
EN

回答 1

Database Administration用户

回答已采纳

发布于 2023-02-07 12:30:30

我假设您在表NUMBER(precision, scale)中输入了一个plants列,其中precision是小数点前后的最大数字总数,scale是小数点之后的数字数。找一个这样的专栏。要插入的值超过了这些限制。

此外,您正在将大部分值作为单引号中的字符串插入。将值插入没有引号的数字列中。即使它在Oracle中工作,它也不适用于其他数据库,因此很难检测insert语句中的数字列。

现在您已经添加了表声明,我看到您正在将'200681'插入到id_tax_code中,该D5类型为NUMBER(5,0),但该值有6位数(如果我匹配正确的列)。

我还想知道为什么GUID列被键入为VARCHAR2(200 BYTE)。他们有36个字符的长度。

FIELD48这样的字段名是很糟糕的。

我还建议在insert语句中的每5列后面插入换行符。这使得匹配列和值更加容易:

代码语言:javascript
运行
复制
INSERT INTO plants(
    created_at, updated_at, published, title, id_old,
    simplified_name, code, dp1, dh1, dh2,
    dh4, field9, migrate, lives_in_ro, is_endemic,
    is_international, is_national, priority, id_synonim, id_group,
    genus, id_tax_code, guid, vernacular_name, is_sensitive,
    --     ^^^^^^^^^^^
    id_red_list_codes, id_owner, insert_date, update_date, is_in_zoo,
    is4a, is5a, is5b, is4b, is_cites,
    is_bdv, is_ber, is_bon, is_new_record, is_for_derogation,
    id_inserter, berna1, bonn1, anexa_bonn, anexa_berna,
    berna2, berna3, bonn2, a17code, field47,
    field48, field49, taxup, incerta, spontan,
    cultivat, invaziva, al, turbarie, lr,
    l_rosie, lista_rosie, taxon, increngatura, clasa,
    ordin, familia, gen, specia, autor,
    subspecia, autor_ssp, varietatea, autor_var, forma,
    autor_for, ngexc, ngcateg, biblio, transferat,
    submited_checked
) VALUES(
    TO_DATE(sysdate, 'yyyy/mm/dd hh24:mi:ss'), TO_DATE(sysdate, 'yyyy-mm-dd hh24:mi:ss'), 0, 'Euclasta perisalis', '99012',
    'perisalis', '', '0', '0', '0',
    '0', '0', '0', '0', '0',
    '0', '0', '0', '306200', '1',
    'Euclasta', '200681', '8615DFE9-C28A-4240-B3A2-79D97ECCD41C', '', '0',
    --          ^^^^^^^^
    '', '', '00:00,0', '', '0',
    '0', '0', '0', '0', '0',
    '0', '0', '0', '0', '0',
    'D8446A30-8B8B-4059-AE3F-86AF0ABA39B8', '0', '0', '', '',
    '', '', '', '', '',
    '', '', '', '', '',
    '', '', '', '', '0',
    '', '', '', 'Arthropoda', 'Insecta',
    'Lepidoptera', 'Crambidae', 'Euclasta', 'varii', '',
    '', '', '', '', '',
    '', '', '', '', '',
    '0'
)

另请参阅:

  • 数据类型
  • 诺尔斯。对于空列,您应该插入NULL而不是''。还可以从列列表中删除列名,也可以从值列表中删除相应的值。未显式插入的列将默认为列默认值,如果未指定默认值,则为NULL。
票数 2
EN
页面原文内容由Database Administration提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://dba.stackexchange.com/questions/323159

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档