NGMsoftware

NGMsoftware
로그인 회원가입
  • 매뉴얼
  • 학습
  • 매뉴얼

    학습


    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은 허용하지 않습니다.

    LVnToqU.png

     

     

    그러면~ 코드를 아래와 같이 바꿔주면 되겠죠? 비트 연산으로 ARRAY와 VARCHAR로 형식을 설정하고, VALUE에 STRING[]을 추가 해줍니다.

    command.Parameters.Add("parameter_name", NpgsqlDbType.Array | NpgsqlDbType.Varchar).Value = mspcModel.Parameters.Select(s => s.Name).ToArray();

     

    이 글이 도움이 되셨다면~ 커피 한잔이라도 후원 부탁드립니다^^

    개발자에게 후원하기

    MGtdv7r.png

     

    추천, 구독, 홍보 꼭~ 부탁드립니다.

    여러분의 후원이 빠른 귀농을 가능하게 해줍니다~ 답답한 도시를 벗어나 귀농하고 싶은 개발자~

    감사합니다~

    • 네이버 공유하기
    • 페이스북 공유하기
    • 트위터 공유하기
    • 카카오스토리 공유하기
    추천0 비추천0

    댓글목록

    등록된 댓글이 없습니다.