postgreSQL和PL / pgSQL:对于varchar(36),值太长,但是昨天我将字段扩展为60

问题描述 投票:0回答:1

我正在建立一个数据库,我将.xlsx电子表格导入其中。在此过程中,我遇到了字段长度问题,并根据需要扩展了字段。到目前为止,这已经解决了所有问题。

今天我收到以下消息:

ERROR:  value too long for type character varying(36)
CONTEXT:  SQL statement "INSERT INTO nvschema.txtdata (tuid, customersamplenumber, samplenumber, sample_id_db, location, sampledate, sampletime, qaqc_type, datasource, laboratory)
                       VALUES (theuid, str1, str4, str5 || '_' || str2 || str3 || '_' || str6, str5, str2, str3, str6, str7,str8)"
PL/pgSQL function nvschema.pivot_raw2txt() line 223 at SQL statement
PL/pgSQL function nvschema.rebuild_analyses() line 10 at assignment
SQL state: 22001

两件事在这里让我感到困惑:

  1. 223行的引用与CONTEXT中引用的SQL语句不一致。 ivot_raw2txt()的第223行根本没有SQL,它是将值分配给整数变量。 222碰巧有一个指向不同表的不同INSERT语句。稍后,在CONTEXT中引用的SQL语句为11行,即234。行号为何会有这种差异?

  2. 我敢肯定,所讨论的字段是'sample_id_db。昨天的宽度是36,但我将其扩展到60以适应更长的字符串。从昨天开始,我重新启动了pgAdmin和postgreSQL服务,但是仍然有人认为该字段的宽度为36。实际上,在我的任何表中,txtdata中都没有宽度为36的varchar字段。 “仍然认为-36”问题的根源是什么?

PostgreSQL 11,并且编码为UTF-8,如果有所不同。

更新:需要通过其他软件中的链接表读取此数据库。建立链接表很麻烦,并且每次字段宽度更改时都需要完成。建立比我期望容纳的数据还要宽的字段宽度并以这种方式保留是很方便的。

Update2:认为该表可能有问题,我将其降级并重新构建,再次使用字段宽度60。执行插入时得到相同的结果。

postgresql plpgsql
1个回答
1
投票

为什么您的'sample_id_db'具有固定的宽度,没有目的。只需让Postgresql即时解决-

创建表xxx(sample_id_db VARCHAR等)

© www.soinside.com 2019 - 2024. All rights reserved.