web-dev-qa-db-ja.com

挿入できません:エラー:配列値は「{」またはディメンション情報で始まる必要があります

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',...

PostgreSQLでは、上記のさまざまなINSERTステートメントは失敗します。私が間違っているのは何ですか?

編集:

私のスキーマ:

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

私のテーブル:

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)
15
Noob Doob

あなたの列usernamearray型であるようであるため、リテラル_'mahman'_はそうではありません有効な入力。

_'{mahman}'_でなければなりません:

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

(または、代わりにプレーンvarchar列またはtext列にします。)

更新により確認されます:character varying(50)[]は、character varying(50)arrayです。

25