postgresql 无法插入:错误:数组值必须以“{”或维度信息开头

声明:本页面是StackOverFlow热门问题的中英对照翻译,遵循CC BY-SA 4.0协议,如果您需要使用它,必须同样遵循CC BY-SA许可,注明原文地址和作者信息,同时你必须将它归于原作者(不是我):StackOverFlow 原文地址: http://stackoverflow.com/questions/31519063/
Warning: these are provided under cc-by-sa 4.0 license. You are free to use/share it, But you must attribute it to the original authors (not me): StackOverFlow

提示:将鼠标放在中文语句上可以显示对应的英文。显示中英文
时间:2020-09-09 06:02:01  来源:igfitidea点击:

Cannot INSERT: ERROR: array value must start with "{" or dimension information

arrayspostgresqltypessql-insert

提问by Noob Doob

journeypost=# INSERT INTO user_data.user_data (username,randomint) VALUES ('mahman',1);
ERROR:  array value must start with "{" or dimension information
LINE 1: ... user_data.user_data (username,randomint) VALUES ('mahman...

journeypost=# INSERT INTO user_data.user_data (username,randomint) VALUES {'mahman',1};
ERROR:  syntax error at or near "{"
LINE 1: ...O user_data.user_data (username,randomint) VALUES {'mahman',...

journeypost=# INSERT INTO user_data.user_data (username,randomint) VALUES (2,{'mahman',1});
ERROR:  syntax error at or near "{"
LINE 1: ...ser_data.user_data (username,randomint) VALUES (2,{'mahman',...

The above varying INSERT statements fail, in PostgreSQL. What is it that I am doing wrong?

在 PostgreSQL 中,上述不同的 INSERT 语句失败。我做错了什么?

EDIT:

编辑:

My schema:

我的架构:

journeypost=# \dt user_data.*
           List of relations
  Schema   |   Name    | Type  | Owner 
-----------+-----------+-------+-------
 user_data | user_data | table | user
(1 row)

My table:

我的表:

journeypost=# \d user_data.user_data
           Table "user_data.user_data"
  Column   |          Type           | Modifiers 
-----------+-------------------------+-----------
 username  | character varying(50)[] | not null
 randomint | integer                 | 
Indexes:
    "UsernameUnique" PRIMARY KEY, btree (username)

回答by Erwin Brandstetter

Your column usernameseems to be an arraytype, so the literal 'mahman'is not valid input for it.

您的列username似乎是数组类型,因此文字'mahman'不是它的有效输入。

It would have to be '{mahman}':

它必须是'{mahman}'

INSERT INTO user_data.user_data (username,randomint)
VALUES ('{mahman}',1);

(Or make it a plain varcharcolumn or textcolumn instead.)

(或者将其改为普通varchar列或text列。)

Update confirms it: character varying(50)[]is an arrayof character varying(50).

更新确认它:character varying(50)[]是一个阵列character varying(50)