데이터베이스에서 데이터 정렬은 원래 utf8_general_ci입니다. 그러나 더 나은 정렬 정확도 때문에 utf8_unicode_ci이 필요하다는 것을 알았습니다.가져 오는 동안 기본 데이터베이스 데이터 정렬을 준수하지 않습니다.
그래서 phpmyadmin을 사용하여 모든 데이터베이스를 내 보낸 다음 "COLLATION"이라는 단어가 내 보낸 SQL 파일에 표시되지 않는지 확인했습니다 (이진으로 설정된 한 테이블에서 2 번만 제외). 일반적으로이 스크립트는 일별 불가지론 자입니다 가져올 때 특정 데이터 정렬을 암시해서는 안되며 데이터베이스 기본값을 사용하십시오.
모든 테이블을 삭제 한 후 데이터베이스 정렬이 utf8_unicode_ci으로 변경된 다음 가져 오기 스크립트가 phpmyadmin에서 실행되었습니다. 그러나 결과적으로 모든 테이블과 모든 열이 utf8_general_ci 데이터 정렬 (및 정렬이 잘못되었습니다)으로 다시 표시됩니다. 왜?? 그리고 그것을 바꾸기 위해 무엇을해야합니까?
P. 수출/수입 스크립트 시작 부분에 라인을 주석 포함 :
/*!40101 SET @[email protected]@COLLATION_CONNECTION */;
가 가져 오는 동안 어떤 영향이 있는지 모르겠지만, MySQL은 콘솔을 연 후, 명령 show variables like 'collation_connection'
은 cp852_general_ci으로이 collation_connection을 보여줍니다. 그러나 phpmyadmin-> 변수에서 'collation_connection'변수는 utf8_general_ci으로 설정됩니다. 그러나 그것을 바꿀 방법이 없습니다.
확인. 삶을 단순화하기 위해 자동으로 변경된 [스크립트] (http://www.webhostingtalk.com/showthread.php?t=682119)를 찾았습니다. 마지막으로 데이터 정렬은 정상이며 데이터베이스는 여전히 작동합니다. 이해할 수 있듯이 이후의 모든 내보내기/가져 오기 작업 (기존 테이블의 경우 내보내기 스크립트에 이미 모든 열에 대해 'COLLATE utf8_unicode_ci'절이 포함되어 있으므로 모든 새 테이블에 대해 동일하게 수행해야합니다). 데이터베이스 당 설정이 있어야합니다. – camcam
데이터베이스가 아닌 내보내기에 의존하는 이유는 데이터 정렬이 저장하는 실제 데이터에 영향을 줄 수 있기 때문입니다. 예를 들어 대소 문자를 구분하는 utf8_bin 데이터 정렬로 만든 기본 키 또는 고유 키는 다른 데이터 정렬에서 직접 가져올 때 충돌하고 실패 할 수 있습니다. –