[mysql] # 1273-알 수없는 데이터 정렬 : ‘utf8mb4_unicode_ci’cPanel
로컬 컴퓨터에 cPanel의 호스팅 phpMyAdmin으로 전송하려는 WordPress 데이터베이스가 있습니다. 그러나 데이터베이스를 환경으로 가져 오려고하면이 오류가 계속 발생합니다.
#1273 - Unknown collation: 'utf8mb4_unicode_ci'
나는 주변에 구글을 시도하고 내가 찾을 수있는 유일한 해결책은이 하나의 phpmysql 오류-# 1273-# 1273-알 수없는 데이터 정렬 : ‘utf8mb4_general_ci’ . 쿠키를 지우려고했지만 여전히 작동하지 않습니다. 도와주세요!
답변
모든 서버에서 이전 버전의 MySQL을 실행하는 것과 동일한 문제가있었습니다. 이것은 PHP 스크립트를 실행하여 해결할 수 있습니다. 파일에이 코드를 저장하고 데이터베이스 이름, 사용자 및 암호를 입력하여 실행하며에서 정렬을 변경할 수 있습니다 utf8mb4/utf8mb4_unicode_ci
에utf8/utf8_general_ci
<!DOCTYPE html>
<html>
<head>
<title>DB-Convert</title>
<style>
body { font-family:"Courier New", Courier, monospace; }
</style>
</head>
<body>
<h1>Convert your Database to utf8_general_ci!</h1>
<form action="db-convert.php" method="post">
dbname: <input type="text" name="dbname"><br>
dbuser: <input type="text" name="dbuser"><br>
dbpass: <input type="text" name="dbpassword"><br>
<input type="submit">
</form>
</body>
</html>
<?php
if ($_POST) {
$dbname = $_POST['dbname'];
$dbuser = $_POST['dbuser'];
$dbpassword = $_POST['dbpassword'];
$con = mysql_connect('localhost',$dbuser,$dbpassword);
if(!$con) { echo "Cannot connect to the database ";die();}
mysql_select_db($dbname);
$result=mysql_query('show tables');
while($tables = mysql_fetch_array($result)) {
foreach ($tables as $key => $value) {
mysql_query("ALTER TABLE $value CONVERT TO CHARACTER SET utf8 COLLATE utf8_general_ci");
}}
echo "<script>alert('The collation of your database has been successfully changed!');</script>";
}
?>
답변
1) 데이터베이스의 “내보내기”탭을 클릭하십시오
2) “사용자 정의”라디오 버튼을 클릭하십시오
3) “형식 별 옵션”섹션으로 이동하여 “다음과의 출력 호환성을 최대화하기 위해 데이터베이스 시스템 또는 이전 MySQL 서버 :”의 드롭 다운을 NONE에서 MYSQL40으로 변경하십시오.
4) 하단으로 스크롤하여 “GO”를 클릭하십시오.
이 작업을 수행하면 데이터가 손실되는지 확실하지 않지만 한 번 시도한 후에는 전혀 눈치 채지 못했습니다. 위의 포럼에서 응답 한 사람도 없었습니다.
편집 8/12 / 16- 이 방법으로 데이터베이스를 내 보내면 Black Studio TinyMCE Visual Editor 위젯에 저장된 데이터가 손실 되지만 확인을 위해 여러 테스트를 실행하지는 않았다고 생각합니다.
답변
.sql
파일 을 이미 내 보낸 경우 파일에 파일이 있으면 다음을 찾아서 바꾸는 것이 가장 좋습니다.
utf8mb4_0900_ai_ci
에utf8_unicode_ci
utf8mb4
에utf8
utf8_unicode_520_ci
에utf8_unicode_ci
그것은 대체 할 것이다 utf8mb4_unicode_ci
에 utf8_unicode_ci
. 이제 phpMyAdmin cPanel로 이동하여 Operations> Collation 을 utf8_unicode_ci
통해 DB 데이터 정렬을 설정하십시오 .
로 .sql
내보내는 경우 파일을 내보내는 방법에 대한 형식을 변경하는 것이 좋습니다. Evster의 답변을 확인하십시오 (이 페이지와 같은 페이지에 있음).
답변
나는 이것을 리눅스에서 사용한다 :
sed -i 's/utf8mb4/utf8/g' your_file.sql
sed -i 's/utf8_unicode_ci/utf8_general_ci/g' your_file.sql
sed -i 's/utf8_unicode_520_ci/utf8_general_ci/g' your_file.sql
그런 다음 your_file.sql을 복원하십시오.
mysql -u yourdBUser -p yourdBPasswd yourdB < your_file.sql
답변
WordPress 4.2는 보안상의 이유로 “utf8mb4″문자 인코딩을 지원하지만 MySQL 5.5.3 이상 만 지원합니다. 설치 프로그램 (및 업데이터)이 처리하는 방식은 MySQL 버전을 확인하고 지원되는 경우에만 데이터베이스가 utfmb4로 업그레이드된다는 것입니다 입니다.
이론적으로는 훌륭하게 들리지만 utf8mb4를 지원하는 MySQL 서버에서 데이터베이스를 utf8mb4를 지원하지 않는 데이터베이스로 마이그레이션 할 때 문제가 발견되었습니다. 다른 방법은 효과가 있지만 기본적으로 단방향 작업입니다.
Evster가 지적한대로 PHPMYAdmin의 “내보내기”기능을 사용 하면 성공 했을 것입니다. ” 내보내기 방법 : 사용자 정의 “및 ” 데이터베이스 시스템 또는 이전 MySQL 서버에 다음과의 출력 호환성을 최대화 하려면”드롭 다운 선택 ” MYSQL 40 ” .
mysqldump를 사용하는 명령 행 내보내기. 깃발을보세요 :
$ mysqldump --compatible=mysql4
참고 : 데이터베이스에 4 바이트 문자가 있으면 손상됩니다.
마지막으로 인기있는 WP Migrate DB PRO 플러그인을 사용하는 사람이라면 누구나이 WordPress.org 스레드의 사용자가 마이그레이션이 항상 올바르게 처리되지만 공식적인 것을 찾을 수 없다고보고합니다.
WP Migrate DB 플러그인은 5.5.3 이전 또는 이후 MySQL이있는 호스트간에 4.2 사이트를 이동할 때 데이터베이스를 한 데이터 정렬에서 다른 데이터 정렬로 변환합니다.
현재 데이터베이스 업데이트를 거부 할 수있는 방법이 없습니다. 따라서 MySQL이 5.5.3 이상인 서버 또는 로컬 호스트에서 이전 MySQL 버전을 사용하는 사이트로 사이트를 마이그레이션하는 워크 플로를 사용하는 경우 운이 좋지 않을 수 있습니다.
답변
내 경우에는 내 밝혀
새로운 서버가 실행 MySQL 5.5
,
기존 서버가 실행되었다 MySQL 5.6
. 이전 서버에서 내 보낸 파일
을 가져 오려고 할 때이 오류가 발생했습니다 .sql
.
MySQL 5.5는 지원하지 utf8mb4_unicode_520_ci
않지만
MySQL 5.6은 지원 합니다.
MySQL 5.6
새 서버에서 업데이트하면 데이터 정렬 오류가 해결되었습니다!
MySQL 5.5를 유지하려는 경우 다음을 수행 할 수 있습니다
.-내 보낸 .sql
파일 의 복사본 만들기
-인스턴스 교체 utf8mb4unicode520_ci
및 utf8mb4_unicode_520_ci
…로 utf8mb4_unicode_ci
-업데이트 된 .sql
파일 가져 오기