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
[이 글에 대해서 여러분들과 의견을 공유하고 싶습니다. 틀리거나 미흡한 부분 또는 의문 사항이 있으시면 언제든 댓글 남겨주십시오.]