#1273 - 불분명한 대조: 'utf8mb4_unicode_ci' cPanel
로컬 머신에 WordPress 데이터베이스가 있으며 이를 cPanel의 호스트된 phpMyAdmin으로 전송합니다.그러나 데이터베이스를 환경으로 가져오려고 하면 다음 오류가 계속 표시됩니다.
#1273 - Unknown collation: 'utf8mb4_unicode_ci'
구글에서 검색해 봤는데, 찾을 수 있는 유일한 해결책은 이 phpmysql 오류 - #1273 - #1273 - Unknown collation: 'utf8mb4_general_ci'입니다.이러한 오류는 현재로선 큰 도움이 되지 않습니다.쿠키를 지우려고 했는데 아직도 안 돼요.도와주세요!
1) 데이터베이스의 [Export]탭을 클릭합니다.
2) [커스텀] 라디오 버튼을 클릭합니다.
3) "Format-specific options" 섹션으로 이동하여 "Database system or old MySQL server to maximum output compatibility with:" 드롭다운을 NONE에서 MYSQL40으로 변경합니다.
4) 하단으로 스크롤하여 "GO"를 클릭합니다.
이렇게 하면 데이터가 손실될지는 모르겠지만, 한 번 시도해 본 결과 전혀 눈치채지 못했습니다.위에 링크된 포럼에서 응답한 사람도 없습니다.
Edit 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
은 it it it it it it it itutf8mb4_unicode_ci
로로 합니다.utf8_unicode_ci
를 "phMyAdmin cPanel"로 utf8_unicode_ci
[ Operations ]> [ Collation ]를 선택합니다.
.sql
파일 내보내기 형식을 변경하는 것이 좋습니다.Evster의 응답자 확인 (이 페이지와 같은 페이지)
모든 서버가 이전 버전의 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>";
}
?>
Linux에서는 다음을 사용합니다.
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
sed -i 's/utf8_0900_ai_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 서버에서 지원하지 않는 MySQL 서버로 데이터베이스를 마이그레이션하는 경우입니다.그 반대도 가능하지만 기본적으로는 일방적인 작업입니다.
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 버전을 사용하는 사이트로 사이트를 이행하는 워크플로우를 사용하는 경우 운이 없을 수 있습니다.
는 알고 의 우우, in니 in in in in in in in
가 실행되고 .MySQL 5.5
,
가 실행되고 .MySQL 5.6
.
이 때 이 요..sql
이전 서버에서 내보낸 파일입니다.
5는 MySQL 5.5를 .utf8mb4_unicode_520_ci
MySQL 5.6 my my my my 。
신처로 중MySQL 5.6
가 해결되었습니다. !새운운새새새!!! 。
MySQL 5.5에서 사용할 수 있습니다.
을 복사해 . - 복사해 주세요..sql
의를 .- 「 」utf8mb4unicode520_ci
★★★★★★★★★★★★★★★★★」utf8mb4_unicode_520_ci
함께...와 함께utf8mb4_unicode_ci
한 내용을 .- 「 Import 。.sql
filename을 클릭합니다.
wp-config에 행이 있습니다.php:
define('DB_CHARSET', 'utf8mb4');
Markouver / Evster의 지시에 따를 경우 프로덕션 서버의 이 행을 다음과 같이 변경하는 것을 잊지 마십시오.
define('DB_CHARSET', 'utf8');
고장난 4바이트 문자를 수정하기 위해
오랜 연구 끝에 위의 해결책을 찾았습니다.
먼저 wp-config를 변경합니다.php> 데이터베이스 DB_CHARSET 기본값은 "utf8" 입니다.
데이터베이스의 [내보내기] 탭을 누릅니다.
[ Custom ]옵션 버튼을 클릭합니다.
"Format-specific options" 섹션으로 이동하여 "출력 호환성을 최대화할 데이터베이스 시스템 또는 이전 MySQL 서버" 드롭다운을 NONE에서 MYSQL40으로 변경합니다.
맨 아래로 스크롤하여 [Go]을 클릭합니다.
그럼 시작합시다.
호스트가 utf8mb4 대조로 테이블을 실행할 수 있는 MySQL 버전을 제공하지 않는 것 같습니다.
WordPress 테이블은 버전 4.2(2015년 4월 23일 출시)에서 utf8mb4로 변경되었지만 사용하려면 MySQL 5.5.3이 필요합니다. 5.5.3은 2010년 3월 이후이므로 일반적으로 널리 사용할 수 있습니다.당신의 호스트가 그 버전을 제공하고 있는지 확인해 주시겠습니까?
업그레이드가 불가능하여 업그레이드가 불가능한 경우 최신 WordPress 버전을 실행할 다른 호스트도 찾아야 할 수 있습니다(또한 보안상의 이유로 항상 실행해야 합니다).
MySQL 5.6에서 MySQL 5.5로 다음과 같이 해결했습니다.
$ mysqldump -u username -p --compatible=mysql4 database_name > database_name.sql
$ sed -i 's/TYPE=InnoDB/ENGINE=InnoDB/g' database_name.sql
(선택사항) 작성.sql.gz
파일:
$ gzip database_name.sql
설명.
$ mysqldump -u username -p --compatible=mysql4 database_name > database_name.sql
이 답변에서 설명한 바와 같이 이는 phpMyAdmin의 "Database system or older MySQL server to maximum output compatibility to:" 드롭다운에서 "MYSql 40"을 선택합니다.
$ sed -i 's/TYPE=InnoDB/ENGINE=InnoDB/g' database_name.sql
이 문제를 해결하려면 다음이 필요합니다.
18행의 오류 1064(42000): SQL 구문에 오류가 있습니다. 9행의 'TYPE=InnoDB' 근처에서 사용할 올바른 구문은 MySQL 서버 버전에 해당하는 설명서를 참조하십시오.
저도 이 문제를 경험했습니다.이 솔루션은 Sequel Pro에서 로컬 데이터베이스를 열고 Import하기 전에 테이블별로 Encoding and Collation을 utf8/utf8_bin으로 업데이트했습니다.
가장 쉬운 방법은 데이터베이스를 내보내는 것입니다..sql
메모장++에서 열고 "검색 및 교환"하여utf8mb4_unicode_ci
로.utf8_unicode_ci
또, 교환하다utf8mb4
로.utf8
또한 데이터베이스 대조는 다음과 같이 변경하는 것도 잊지 마십시오.utf8_unicode_ci
([Operations]> [ Collation ]).
메모장++에서 sql 파일을 열고ctrl + H.
그리고 나서 "를 넣으세요.utf8mb4
검색 중 및utf8
"를 교환합니다.그러면 문제가 해결됩니다.
PHP7을 사용하고 있는 경우, 데이터 수집을 이행하기 위해서는 다음과 같은 PHP 스크립트가 필요합니다.
<!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'];
$mysqli = new mysqli('db',$dbuser,$dbpassword);
if ($mysqli -> connect_errno) {
echo "Failed to connect to MySQL: " . $mysqli -> connect_error;
exit();
}
$mysqli -> select_db($dbname);
$result= $mysqli->query('show tables');
while($tables = $result->fetch_array) {
foreach ($tables as $key => $value) {
$mysqli->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>";
}
?>
언급URL : https://stackoverflow.com/questions/29916610/1273-unknown-collation-utf8mb4-unicode-ci-cpanel
'source' 카테고리의 다른 글
MySQL 오류: 키 길이가 없는 키 지정 (0) | 2022.09.05 |
---|---|
MariaDB는 여러 서브쿼리가 있는 여러 행에 "삽입" (0) | 2022.09.05 |
MySQL에서 재귀 SELECT 쿼리를 수행하는 방법 (0) | 2022.09.05 |
MySQL과 Maria의 패스워드 해시 차이점DB (0) | 2022.09.05 |
MySQL, 두 열 연결 (0) | 2022.09.05 |