반응형
열 정렬을 utf8mb4_general_ci에서 utf8mb4_bin으로 변경하면 테이블이 손상됨
mysql 데이터베이스(mysql 및 mariadb)에서 컬럼의 대조 내용을 utf8mb4_general_ci에서 utf8mb4_bin으로 변경해야 합니다.이 요청을 실행하면 됩니다.
ALTER TABLE table MODIFY column VARCHAR(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin;
이 열에는 고유한 인덱스가 있습니다.이 기능은 여러 환경에서 완벽하게 작동하지만, 그 이유는 알 수 없지만 일부 다른 환경에서는 데이터가 손상됩니다(프로덕트 환경에서는 분명히...).
Corruption of an index tree: table `db`.`table` index `unique_column`, father ptr page no 640, child page no 683 PHYSICAL RECORD: n_fields 2; compact format; info bits 0
왜 그런지 아는 사람 있어요?재생산도 안 되고 환경도 테스트하기에 적합하지 않아...이 데이터베이스의 덤프를 다시 Import할 때 완벽하게 작동하기 때문에 데이터 문제가 발생할 수 있습니다. 그러나 이 데이터 문제를 어떻게 찾을 수 있을까요?
감사합니다! (영어가 서툴러서 죄송합니다)
CONVERT를 사용할 수 있습니다.
ALTER TABLE tablename CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_bin
그러나 백업 없이 아무것도 하지 않음
문제가 해결되면 고유 인덱스를 삭제하고 대조한 후 인덱스를 다시 만듭니다.문제는 해결되었지만 몇 개의 데이터베이스에서 왜 그렇게 해야 하는지 이해할 수 없습니다.
열을 하나만 변경하려면:
ALTER TABLE <table_name> MODIFY <column_name> VARCHAR(512) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin
언급URL : https://stackoverflow.com/questions/61348286/change-column-collate-from-utf8mb4-general-ci-to-utf8mb4-bin-corrupt-the-table
반응형
'programing' 카테고리의 다른 글
디코딩의 차이점은 무엇입니까?URIC 구성 요소와 decodeURI? (0) | 2023.01.19 |
---|---|
MariaDB 서비스를 계속 시작하지 못했습니다. (0) | 2023.01.19 |
php: 어레이 키 케이스 *insensitive* lookup? (0) | 2023.01.08 |
입력 유형=범위를 변경하는 이벤트가 끌 때 Firefox에서 트리거되지 않음 (0) | 2023.01.08 |
JavaScript에서 Const: 언제 사용할지, 필요한지를 확인합니다. (0) | 2023.01.08 |