4.2 utf8mb4 데이터베이스 업그레이드 재실행


14

이전 서버에있는 동안 UT 를 4.2로 업데이트 했는데 utf8mb4 업그레이드 요구 사항 과 일치하지 않습니다 .

이러한 요구 사항에 맞는 다른 서버로 옮겼지만 WP는 더 이상이 데이터베이스 업그레이드를 시작하지 않습니다. /wp-admin/upgrade.php라고 말합니다 Your WordPress database is already up-to-date. wp_post테이블을 수동으로 utf8mb4 로 설정하려고 했지만 모든 특수 문자가 " "가되었습니다.

maybe_convert_table_to_utf8mb4특별한 문자를 모두 잃지 않고 간단한 업그레이드 로 강제로 시작할 수 있습니까?

감사!

답변:


5

귀하의 질문에 대한 답변은 "아니오"라고 생각합니다.

maybe_convert_table_to_utf8mb4이 게시물에 제시된 요구 사항을 충족하지 않는 서버에서 사이트가 WP 4.3 이상으로 업그레이드 된 후에는 사이트 를 트리거 할 수있는 쉬운 방법이 없습니다 .

https://make.wordpress.org/core/2015/04/02/the-utf8mb4-upgrade/

WP 소스 코드를 살펴보면 4.2 업데이트 시퀀스에서 4.3으로 더 이상 업그레이드하지 않은 4.2 버전으로 변경 한 것으로 보입니다.

그래서 그것은 당신의 대답이며 다른 것들보다 더 정확하지만 ¯_ (ツ) _ / ¯

현재 작업 후크를 기반으로 업그레이드 시퀀스의 본질을 트리거 할 수있는 간단한 스크립트를 작성 중입니다. 안정적으로 작동 할 수 있다면 다른 사람들이 사용할 수 있도록 다시 돌아와 공유하려고합니다.

기본 계획은의 실제 db 부분을 추출 upgrade_430()하여 db 업데이트 시스템에서 분리하여 수동으로 트리거하는 것입니다.

편집 : 아래 솔루션

스크립트를 트리거하는 쉬운 방법은 upgrade_430()없지만 다음은 드롭 인으로 설계된 수동 코딩 된 해결 방법 입니다.

https://gist.github.com/carlalexander/4106cfaaf405cec454ba195631bcb6bc

이것을 플러그인에 넣거나 functions.php에 붙여 넣을 수 있습니다. 어느 쪽이든 임시이어야합니다.

방문 할 때 자동으로 트리거되도록 설정되어 있습니다. https://yoursite.com/?update-utf8bm4=1

이렇게하면 단 한 번만 실행되고 시간을 선택할 수 있습니다 (대형 데이터베이스의 경우 시간이 오래 걸릴 수 있으며 게시물이 발생하는 동안 게시물을 편집하고 싶지는 않습니다).

GET 트리거를 원하지 않으면 add_action파트와 파트를 제거하십시오 if (!isset($_GET['update-utf8bm4'])).

다시 :이 완료되면 이것을 제거하십시오.


2

물론 아무 말도하지 않으면 아무 것도 시도하기 전에 데이터베이스를 백업해야하지만 원래 버전의 데이터베이스로 작업해야합니다. WordPress 데이터베이스 복구 및 유지 관리와 phpMyAdmin의 최적화 테이블 두 가지를 시도합니다.

이 페이지는 많은 정보 WP Knowledgebase 가 있지만이 줄을 사이트의 wp-config.php에 추가하여 시작합니다.

define('WP_ALLOW_REPAIR', true);

그런 다음 http://yoursite.com/wp-admin/maint/repair.php 로 이동하십시오.

'데이터베이스 복구'와 '데이터베이스 복구 및 최적화'라는 두 가지 옵션이있는 페이지가 표시됩니다.

'데이터베이스 복구 및 최적화'를 클릭하고 스크립트 실행 시간을 제공하십시오. 성공적으로 실행되면 다양한 테이블의 상태를 알려주는 업데이트 메시지가 표시됩니다.

그것이 매우 중요하게 실행 되 자마자 방금 wp-config.php에 추가 한 wp_allow_repair 라인을 제거하고 wp-config.php 파일에서 삭제하십시오.

그래도 작동하지 않으면 phpMyAdmin의 테이블 최적화를 시도 할 수 있지만 WordPress가 도움이되지 않으면 그다지 효과가 없습니다. 마지막 복구를 실행 한 동일한 버전의 데이터베이스에서 시도해 보았습니다.

phpMyAdmin으로 이동하여 데이터베이스를 선택하고 페이지 하단으로 스크롤 한 다음 '모두 확인'을 선택하여 데이터베이스의 모든 테이블을 선택한 다음 옆의 선택 메뉴에서 "테이블 최적화"를 선택하십시오. 그게 자동으로 시작됩니다.

자세한 내용 및 스크린 샷 : WPMUDev

이 두 단계가 단독으로 또는 함께 작동하지 않으면 다른 백업 데이터베이스 복사본을 사용하여 역순으로 실행할 수 있습니다. 행운을 빕니다!


1
'데이터베이스 복구 및 최적화'를 수행합니다. maybe_convert_table_to_utf8mb4WP 업데이트와 마찬가지로 다시 시작 합니까? 당신은 대답에서 언급하지 않았습니다;)
Joan

안녕하세요 조안, 감독에 대해 죄송합니다 ... 메모에서 그 언급이 구체적으로 언급되지는 않았습니다. 핵심 노트에서 : [ make.wordpress.org/core/tag/wpdb/]
Vanessa King

모든 UTF8 테이블이 있었고 복구 및 최적화를 실행했습니다. 그것들을 utf8mb4로 변환하지 않았습니다. 또한 MyIsam이 아니라 InnoDB이고 이미 utf8mb4 인 테이블은 복구되거나 최적화되지 않았습니다.
rhand

예, 이것은 죄송합니다 질문에 대한 답변이 아닙니다.
jerclarke

0

데이터베이스 테이블 데이터 정렬을 변경하려고 했습니까? 이것을 시도하십시오 :

phpmyadmin에 로그인> 데이터베이스 선택> 작업> 이제 데이터 정렬을 드롭 다운에서 "utf8mb4_unicode_ci"로 변경하거나 기존 서버에서 사용한 항목으로 변경하십시오.

나는 그것이 당신을 위해 작동하기를 바랍니다.

스크린 샷 참조 : http://prntscr.com/8ip1ro/direct

기억하십시오 : 이전 서버에서 PC로 SQL 파일을 내보내고 텍스트 편집기로 파일을 열고 사용자 정의하고 저장하십시오 .... SQL 파일을 저장할 때 확인하십시오. 텍스트 편집기 "인코딩"은 Utf-8입니다 . 내 스크린 샷 참조 : http://prntscr.com/8ip2nr/direct

감사


이것은 내가 함수를 시작하는 것처럼 시도한 것 (너무), 동일한 결과 (모든 곳에서). WP 기능을 쉽게 다시 시작할 수있는 방법을 찾고 있습니다…
Joan
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.