Database [Postgres] 42804: 열 "parameter_name"은(는) character varying[]…
페이지 정보
본문
안녕하세요. 엔지엠소프트웨어입니다. 프로젝트가 시작되기전~ 간단하게 메세지를 주고 받는 미들웨어와 고객사 데이타베이스인 Postgres에 CRUD를 테스트하고 있는데요. 예상하지 못한 문제를 만났습니다. 에러 내용은 제목과 같은데요. 처음보는 에러 내용이네요-_-;
42804: 열 "parameter_name"은(는) character varying[] 자료형인데 표현식은 text 자료형입니다.
내용을 보면 우선, PARAMETER_NAME 컬럼의 자료형이 CHARACTER(아마도... VARCHAR거나 CHAR인듯)인데 VARYING[]는 처음 봤습니다. 대략 컬럼 형식이 배열이라는거 같아요. 대괄호를 사용하고 있으니까요^^; 일반적으로 오라클이나 MSSQL 또는 MYSQL을 사용할 때 VARCHAR에 콤마로 구분해서 데이타를 넣고, 프론트엔드에서 콤마로 스플릿해서 사용하는데요. 컬럼에 배열을 쓸 수 있다는건 오늘 처음 알았습니다. 아무튼, INSERT 문에서 PARAMETER_NAME은 아래와 같이 되어 있습니다.
command.Parameters.AddWithValue("parameter_name", string.Join(",", mspcModel.Parameters.Select(s => s.Name)));
데이타베이스 컬럼 형식을 보면 아래 그림과 같이 ①_VARCHAR가 배열(언더바)로 설정되어 있습니다. ②Not Null은 허용하지 않습니다.
그러면~ 코드를 아래와 같이 바꿔주면 되겠죠? 비트 연산으로 ARRAY와 VARCHAR로 형식을 설정하고, VALUE에 STRING[]을 추가 해줍니다.
command.Parameters.Add("parameter_name", NpgsqlDbType.Array | NpgsqlDbType.Varchar).Value = mspcModel.Parameters.Select(s => s.Name).ToArray();
이 글이 도움이 되셨다면~ 커피 한잔이라도 후원 부탁드립니다^^
개발자에게 후원하기
추천, 구독, 홍보 꼭~ 부탁드립니다.
여러분의 후원이 빠른 귀농을 가능하게 해줍니다~ 답답한 도시를 벗어나 귀농하고 싶은 개발자~
감사합니다~
- 이전글C# 외부 설정 파일 만들기. (System.Configuration) 22.04.22
- 다음글Xml 텍스트(문자열)를 Xml 객체로 변환하는 방법. 22.04.19
댓글목록
등록된 댓글이 없습니다.