2011-09-08 2 views
2

티켓 발급 시스템에 15,000 개의 레코드가있는 테이블이 있습니다. 각 테이블에는 티켓에 추가 할 메시지로 변환 된 전자 메일이 들어 있습니다.열 데이터 정렬 변경 - 안전합니까?

현재 문제는 데이터 정렬입니다. 시스템에 손이있을 때 latin1_swedish_ci를 사용하고있었습니다. 그러나 우리는 시스템에서 여러 유럽 언어를 사용하기 때문에 비 ASCII 문자를 올바르게 저장할 수 있어야합니다.

latin1_swedish_ci 데이터 정렬로이 작업을 수행 할 수 없었지만 데이터 정렬을 utf8_bin으로 전환하면 문제가 해결된다는 테스트 버전의 시스템에서 발견되었습니다.

따라서 라이브 시스템의 테이블/열에이 변경 사항을 적용하는 것이 안전한지 알아야합니다. 이 작업은 오랜 시간이 걸릴 것인가? (PHPMyAdmin은 정말 힘들게 만들려고 할 때 매우 끔찍하다.) 또는 기존 데이터를 손상시킬 수 있습니까?

+0

문제는 데이터베이스 자체가 아닙니다. 문제는 * 발권 시스템 *이 UTF-8 데이터를 처리 할 수 ​​있는지 여부입니다. –

답변

6

첫 번째 문자 세트의 모든 문자를 두 번째 문자 세트에서 나타낼 수있는 경우 한 문자 세트에서 다른 문자 세트로 변환하는 것이 안전합니다.

latin1 ~ utf8의 경우입니다. 안전합니다.

그러나 응용 프로그램 자체가 utf8 데이터를 처리 할 수 ​​있는지 확인해야합니다. utf8_bin에

다음 UTF8 부분은 부분은 조합이다 (문자 인코딩하는 방법) 캐릭터 세트와 빈입니다. 을 사용하지 마십시오. 은 대소 문자를 구분하는 일 수 있습니다. 이는 아마도 예상 한 바가 아닙니다. 대신 utf8_unicode_ci를 시도하십시오. (http://dev.mysql.com/doc/refman/5.5/en/charset-unicode-sets.html 참조)

+0

위대한, 및 변경 열 작업을 수행 할 때 각 15,000 행의 일부 변환을 수행 할 것입니다? PHPMyAdmin에서이 양의 데이터를 덤프 할 수도 없기 때문에 걱정 스럽습니다. 응답이 없으면 –

+0

예, 데이터가 변환됩니다. (평상시와 마찬가지로 그 전에 백업을하십시오.) – arnaud576875

+0

'ALTER TABLE foo CONVERT TO CHARACTER SET ...'을 사용하면 모든 컬럼을 한번에 변환 할 수 있습니다. – arnaud576875