ERROR 1115(42000):알 수 없는 문자 집합: 'utf8mb4'
MySQL 덤프가 있는데, 이 덤프를 사용하여 복원하려고 했습니다.
mysql -u"username" -p"password" --host="127.0.0.1" mysql_db < mysql_db
그러나 이로 인해 다음 오류가 발생했습니다.
ERROR 1115 (42000) at line 3231: Unknown character set: 'utf8mb4'
다음 행은 3231-3233 입니다.
/*!50003 SET character_set_client = utf8mb4 */ ;
/*!50003 SET character_set_results = utf8mb4 */ ;
/*!50003 SET collation_connection = utf8mb4_general_ci */ ;
MySQL 5.1.69를 사용하고 있습니다.이 오류를 해결하려면 어떻게 해야 하나요?
버전에서는 해당 문자 집합을 지원하지 않습니다.5.5.3
도입했습니다.이 파일을 내보내기 위해 사용한 버전으로 mysql을 업그레이드해야 합니다.
에러는, 코드에 특정의 문자 세트를 설정했지만, 사용의 mysql 버전에서는 서포트되고 있지 않기 때문에, 그 문자는 인식되지 않습니다.
https://dev.mysql.com/doc/refman/5.5/en/charset-unicode-utf8mb4.html에 따르면:
utf8mb4는 utf8의 슈퍼셋입니다.
그래서 utf8을 만들고 눈을 감고 희망을 가질 수 있는 기회가 있을지도 모릅니다만, 그것은 데이터에 따라 다르므로 추천하고 싶지 않습니다.
다음 작업을 수행할 수 있습니다.
텍스트 편집기를 사용하여 sql 파일을 열고 모두 찾기 및 바꾸기
utf8mb4 to utf8
다시 Import합니다.
다음과 같은 이점이 있습니다.
mysqldump --compatible=mysql40 -u user -p DB > dumpfile.sql
PHPMyAdmin은 'expert' 내보내기 옵션에서 동일한 MySQL 호환성 모드를 사용합니다.비록 그것이 때때로 아무것도 하지 않았지만.
명령줄 또는 PHPMyAdmin을 통해 액세스할 수 없는 경우
/*!50003 SET character_set_client = utf8mb4 */ ;
읽을 만한 것'utf8'
오직, 가는 길일 뿐이다.
나는 그 질문에 대답하고 있다 - 나는 어느 것도 완성되지 않았기 때문이다.현재 알 수 없는 문자 집합: "utf8mb4"는 MySQL이 5.5.3(utf8mb4가 추가된 버전) 미만인 배포가 많기 때문에 널리 사용되고 있습니다.
이 오류는 다음과 같이 명시되어 있습니다.utf8mb4
db 서버에서 지원됩니다.
원인: 아마 로컬에서MySQL
버전 5.5.3 이상, 스테이지/호스트된 VPS에서는 MySQL 서버 버전이 5.5.3 미만입니다.
그utf8mb4
문자 집합이 MySQL 5.5.3에 추가되었습니다.
utf8mb4
MySQL의 버그로 인해 추가되었습니다.utf8
문자 집합MySQL의 utf8 문자 집합 처리는 단일 코드 포인트에 대해 최대 3바이트만 허용하며, 이는 유니코드 전체(최대 코드 포인트 =)를 나타내기에는 충분하지 않습니다.0x10FFFF
이 버그 동작에 의존하는 어떤 물건도 부수고 싶지 않았기 때문에utf8mb4
가 추가되었습니다.매뉴얼은 이쪽입니다.
SO 답변에서:
검증:덤프를 Import할 DB의 현재 문자 집합과 대조 결과를 확인할 수 있습니다. MySQL 데이터베이스/테이블/컬럼을 확인하려면 어떻게 해야 합니까?
해결책 1: MySQL 서버를 5.5.3(최소한)으로 업그레이드하기만 하면 됩니다.다음 번에는 로컬에서 사용하는 버전, 스테이지용 버전, Prod용으로 사용하는 버전을 모두 동일하게 해야 합니다.권장 사항 - 현재 기본 문자 집합은 utf8mb4여야 합니다.
솔루션 2(권장하지 않음):현재 문자 집합을 utf8로 변환한 다음 데이터를 내보내면 정상적으로 로드됩니다.
텍스트 편집기로 SQL 파일을 열고 'utf8mb4'를 검색한 후 utf8로 바꾸면 됩니다.잘 됐으면 좋겠다
전체 데이터베이스 + 테이블 + 필드에는 동일한 문자 집합이 있어야 합니다.?!
예.
CREATE TABLE `politicas` (
`ID` int(11) NOT NULL AUTO_INCREMENT,
`Nombre` varchar(250) CHARACTER SET utf8 NOT NULL,
-------------------------------------^here!!!!!!!!!!!
PRIMARY KEY (`ID`)
) ENGINE=MyISAM AUTO_INCREMENT=3 DEFAULT CHARSET=utf8;
-------------------------------------------------^here!!!!!!!!!
에서도 몇 과 같이, 「 」를 「 」로 치환해 .utf8mb4
utf8
문제 해결에 도움이 됩니다.,는 IMHO를 했다.sed
데이터 손실을 방지하기 위해 검색 및 교체합니다.또한 그래픽 에디터에 대용량 파일을 여는 것은 문제가 될 수 있습니다.MySQL gbgb2 GB 。는 "" 입니다.
sed 's/utf8mb4_unicode_520_ci/utf8_unicode_ci/g' original-mysql-data.sql > updated-mysql-data.sql
sed 's/utf8mb4/utf8/g' original-mysql-data.sql > updated-mysql-data.sql
알았어!
mysql 파일 편집 도구 열기
발견하다
/*!40101 SET NAMES utf8mb4 */;
바꾸다
/*! 40101 SET NAMES utf8 */;
urmysql을 저장하고 업로드합니다.
언급URL : https://stackoverflow.com/questions/21911733/error-1115-42000-unknown-character-set-utf8mb4
'programing' 카테고리의 다른 글
ODBC를 사용하여 전체 LOB에서 읽는 가장 좋은 방법은 무엇입니까? (0) | 2022.09.18 |
---|---|
@RequestParam vs @PathVariable (0) | 2022.09.18 |
Ubuntu 16.04 MariaDb 설정 예 없음 (0) | 2022.09.18 |
안드로이드 java.langVerify Error? (0) | 2022.09.18 |
SQL DELETE with WHERE 조건에 대한 다른 테이블 참여 (0) | 2022.09.18 |