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.