2011-03-12 5 views
1

다른 테이블의 외래 키로 참조되는 기본 키로 열거 형 데이터 형식을 사용하고 있습니다. 이 열거 형 값에 여분의 요소를 추가해야하는 경우 두 표 모두에서시작부터 2 바이트를 사용하도록 MySuite ENUM 형식을 강제 설정

ALTER TABLE <table> MODIFY <colName> ENUM(<OLD VALUES>, NEW VAL); 

을 사용합니다. 그것은 잘 작동합니다.

내가 모호한 예가 하나 있는데, 결국 < 255 개까지 값이 올라갔습니다. 이 경우 ENUM은 1 바이트 스토리지에서 2 바이트 스토리지로 전환해야합니다. 그것이 실패 할 때입니다. './TXCAD/EN_TABLE'(errno를 : 150)에 './TXCAD/#sql-5912_86'의 이름 변경에 오류 : 나에게

ERROR 1025 (HY000)를주기

나는 몇 가지 연구했다 주 테이블에서 1 바이트에서 2 바이트로의 변환이 외래 키 데이터 유형 불일치를 일으키는 것을 발견했습니다. (내가 256+ 값으로 시작한다면, 전혀 그렇지 않다.) 나는 그것을 확인했다.)

ENUM이 테이블 생성 중에 255 개 미만의 값을 가지고 있어도 MySql이 처음부터 2 바이트를 사용하도록 할 수있는 방법이 있는가? ?

MySQL을 사용 - 5.1 InnoDB 테이블

그냥 알다시피

답변

1

, 나는 꽤이 검색 한. 문서에서 실제로 테이블 생성시 2 바이트 열거 형을 가져 오는 유일한 방법은 언급 한 방법, 즉 열거 형 목록에 255 개가 넘는 항목을 지정하는 것입니다. 나는 그것을 허용하는 구문을 만드는 테이블의 다른 부분을 보지 못했다. 유일한 다른 희망은 다른 기본값을 가능하게하는 구성 파일 매개 변수가 있다는 것입니다.

서버 시스템 변수 목록이 있지만 빠른 검색을 수행했으며 열거 형 필드 크기의 기본 동작을 변경할 수있는 참조가 표시되지 않았습니다. http://dev.mysql.com/doc/refman/5.1/en/server-system-variables.html (주이 페이지는 매우 큰이며, 순간적으로 브라우저를 걸려.)

그냥 당신이 다른 사람이 질문에서 본 알고 싶습니다 생각하고 추가 조사를하기로 결정, 대신 귀뚜라미을 듣고의 ...

+0

주셔서 감사합니다. 나는 페이지도 체크했다. doesnt는 그것의 크기를 강제하는 간단한 방법 인 것처럼 보인다. 정말 강력한 데이터 유형이지만 아직 MySql을 활용하지 못했습니다. – Jai

+0

이 방법을 찾을 수 없습니다. 이 문제에 대한 일반적인 해결책은 없다고 생각합니다. – Jai