PostgreSQL - ERROR: 22P02: malformed array literal: "..."
오랜만에 postgreSQL에 테이블을 하나 만들고,
name character varying[] (150)
age integer
간단한 쿼리를 날렸더니,
INSERT INTO testtable(name,age) VALUES('a10f825a-71f9-4771-8e23-e810c3ac0efa', 5);
이런 오류가 발생합니다.
Server Error in '/' Application.
ERROR: 22P02: malformed array literal: "a10f825a-71f9-4771-8e23-e810c3ac0efa"
Description: An unhandled exception occurred during the execution of the current web request. Please review the stack trace for more information about the error and where it originated in the code.
Exception Details: Npgsql.NpgsqlException: ERROR: 22P02: malformed array literal: "a10f825a-71f9-4771-8e23-e810c3ac0efa"
Source Error:
Line 141:                command.Parameters.Add(new NpgsqlParameter("P1", "a10f825a-71f9-4771-8e23-e810c3ac0efa"));
Line 142:                command.Parameters.Add(new NpgsqlParameter("P2", 5));
Line 143:                int affected = command.ExecuteNonQuery();
Line 144:
Line 145:                command.Parameters.Clear();
Source File: D:\WebTest\WebSiteTest4\postgreSQLTest.aspx.cs    Line: 143
Stack Trace:
[NpgsqlException (0x80004005): ERROR: 22P02: malformed array literal: "fa60119b-b5d7-4b8b-bb2a-5b300b81c1c6"]
   Npgsql.<ProcessBackendResponses_Ver_3>d__a.MoveNext() in C:\projects\Npgsql2\src\Npgsql\NpgsqlState.cs:842
   Npgsql.ForwardsOnlyDataReader.GetNextResponseObject() in C:\projects\Npgsql2\src\Npgsql\NpgsqlDataReader.cs:1163
   Npgsql.ForwardsOnlyDataReader.GetNextRowDescription() in C:\projects\Npgsql2\src\Npgsql\NpgsqlDataReader.cs:1181
   Npgsql.ForwardsOnlyDataReader.NextResult() in C:\projects\Npgsql2\src\Npgsql\NpgsqlDataReader.cs:1373
   Npgsql.ForwardsOnlyDataReader..ctor(IEnumerable`1 dataEnumeration, CommandBehavior behavior, NpgsqlCommand command, NotificationThreadBlock threadBlock, Boolean synchOnReadError) in C:\projects\Npgsql2\src\Npgsql\NpgsqlDataReader.cs:1030
   Npgsql.NpgsqlCommand.GetReader(CommandBehavior cb) in C:\projects\Npgsql2\src\Npgsql\NpgsqlCommand.cs:611
   Npgsql.NpgsqlCommand.ExecuteNonQuery() in C:\projects\Npgsql2\src\Npgsql\NpgsqlCommand.cs:525
   WebSiteTest.postgreSQLTest.Page_Load(Object sender, EventArgs e) in D:\WebTest\WebSiteTest4\postgreSQLTest.aspx.cs:143
   System.Web.Util.CalliEventHandlerDelegateProxy.Callback(Object sender, EventArgs e) +226
   System.Web.UI.Control.OnLoad(EventArgs e) +170
   System.Web.UI.Control.LoadRecursive() +159
   System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint) +3998
Version Information: Microsoft .NET Framework Version:4.0.30319; ASP.NET Version:4.8.4330.0
왜냐하면, postgreSQL의 "character varying[]" 타입은 말 그대로 "string []"처럼 동작하기 때문입니다. 따라서, 해당 테이블의 칼럼 타입을 character varying으로 바꿔야 합니다. ^^;
name character varying (150)
age integer
[이 글에 대해서 여러분들과 의견을 공유하고 싶습니다. 틀리거나 미흡한 부분 또는 의문 사항이 있으시면 언제든 댓글 남겨주십시오.]