2013-08-17 2 views
2

MySQL 데이터베이스를 PostgreSQL로 변환하려고합니다.PostgreSQL ENUM에 MySQL ENUM 비어 있음

MySQL에서 ENUM 데이터 형식은 기본적으로 빈 필드를 허용하며 PostgreSQL에서는 작동하지 않는 것으로 보입니다. 따라서 PgSQL에서 허용하지 않는 데이터베이스에 빈 필드가 많아서 VARCHAR에서 PostgreSQL으로 ENUM으로 변환 할 수 없습니다.

어떻게해야합니까? NULL을 허용하고 빈 필드를 NULL로 설정 하시겠습니까? 형식을 만들 때 PostgreSQL의 ENUM에 빈 값을 추가하십시오 (ENUM ('A', 'B', 'C', '')와 같은)? 이 못 생기고 부조리 한 ENUM 데이터 유형 사용을 중지하고 대신 varchar 또는 다른 테이블과 외래 키에 대한 제약 조건을 사용하십시오.

감사합니다 :) 당신이 실제로 열거에 빈 문자열 값을 가지고 싶다면 유형을 만들 때

user1527491

답변

4

, 당신은 예, 열거에 추가해야합니다. 명시 적으로 빈 문자열을 허용하지 않는 열거 형에 빈 문자열을 허용하는 데이터베이스는 버그이며 응용 프로그램에 의존하는 경우에도 버그가 있습니다.

"알 수 없음"을 의미하는 아이디어라면 NULL을 사용하는 것도 좋은 선택입니다. 순수한 모델 관점에서 보면, 아마도 더 깨끗한 것입니다.

일부 데이터베이스 및 시스템에서는 명확하게 고유 한 값일 때 null과 빈 문자열을 같은 것으로 간주한다는 고전적인 문제가 발생합니다.

+0

감사합니다. :). 지금 나에게 분명하게 보입니다. – user1527491