[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_ciutf8/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_ciutf8_unicode_ci
  • utf8mb4utf8
  • utf8_unicode_520_ciutf8_unicode_ci

그것은 대체 할 것이다 utf8mb4_unicode_ciutf8_unicode_ci. 이제 phpMyAdmin cPanel로 이동하여 Operations> Collationutf8_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_ciutf8mb4_unicode_520_ci
…로 utf8mb4_unicode_ci
-업데이트 된 .sql파일 가져 오기


답변

wp-config.php에 다음 줄이 있습니다 :

define('DB_CHARSET', 'utf8mb4');

Markouver / Evster의 지침 을 따르는 경우 프로덕션 서버에서이 줄을 다음으로 변경하십시오.

define('DB_CHARSET', 'utf8');

깨진 4 바이트 문자를 수정하기 위해