programing

utf8mb3 테이블에 이모지를 저장할 수 없습니다...MariaDB 10.6 업데이트 이후 하룻밤 사이에 nd_mysqli로 전환

telecom 2023. 7. 29. 08:12
반응형

utf8mb3 테이블에 이모지를 저장할 수 없습니다...MariaDB 10.6 업데이트 이후 하룻밤 사이에 nd_mysqli로 전환

이전에는 MariaDB 10.5mysqli사용하여 데이터베이스에 광범위한 Emojis를 성공적으로 저장할 수 있는 utf8mb3 테이블에 많은 오래된 WordPress 웹 사이트를 가지고 있었습니다.

이제 MariaDB 10.6nd_mysqli로 전환한 이후로 데이터베이스와 테이블이 utf8mb4로 변환되지 않으면 WordPress는 이미 이모지가 포함된 이전 게시물을 더 이상 저장할 수 없습니다.

이 문제는 Apache error_log 또는 WordPress debug.log에서 아무런 통지 없이 발생하므로 WordPress 사용자의 문제를 해결하는 데 시간이 걸립니다.Classic Editor에서 WordPress에 의해 명시적인 오류가 표시되지 않습니다. 편집 게시물 양식이 새로 고쳐지고 내용이 손실됩니다.또는 블록 편집기에서 "업데이트 실패" 오류가 발생합니다. 오류 메시지: 데이터베이스에서 게시물을 업데이트할 수 없습니다." 또는 오류 500이 서버에 로그가 없는 브라우저 콘솔에 표시될 수 있습니다.

사용자들이 가장 좌절하는 것은 utf8mb3의 오래된 테이블이 있는 오래된 WordPress 웹 사이트가 이전 콘텐츠에 이모지를 성공적으로 저장하기 전에… 그리고 하룻밤 사이에(서버 업데이트 후) 동일한 오래된 WordPress 웹 사이트가 더 이상 이모지로 콘텐츠를 저장할 수 없다는 것입니다.

my.cnf에서 다음과 같이 비어 있어야 하는 MariaDBold_mode를 변경하려고 했습니다.

old_mode=""

MariaDB 10.6부터 utf8은 기본적으로 utf8mb3의 별칭이지만 old_mode 시스템 변수의 기본값을 빈 값으로 변경하여 ut8mb4로 변경할 수 있습니다(MariaDB 유니코드 문서의 utf8 별칭에 대한 자세한 정보).

하지만 작동하지 않습니다. 이모지는 이전에 작동했던 것처럼 여전히 utf8mb3 테이블에 저장되지 않습니다.

저는 utf8mb3가 이모티콘에 어울리지 않는다는 것을 이해할 수 있습니다.

그런데...

나는 왜 과거에 utf8mb3 테이블로 만들어진 많은 오래된 WordPress 웹사이트들이 많은 이모티콘들이 안에 저장된 오래된 콘텐츠를 가지고 있는지 이해할 수 없습니다. 그것들은 프론트엔드와 백엔드에서 제대로 표시되고 있습니까?서명하다.

지금은 그냥 저축하는 것이 불가능합니다.

이 새로운 행동은 무엇입니까?

테이블을 사용하도록 변환하여 UTF-8로 마이그레이션하는 것을 고려합니다.utf8mb4 3바이트 은 더 는 안 됩니다.이전 3바이트 문자 집합은 더 이상 사용되지 않으므로 사용하면 안 됩니다.

PHP(mysqlnd)는 지원하지 않습니다.아직 이 문자 집합을 사용할 수 없습니다.테이블을 변환할 수 없는 경우 다음에 대한 별칭을 사용합니다.utf8mb3:utf8.

언급URL : https://stackoverflow.com/questions/75809245/cannot-save-emojis-in-utf8mb3-tables-overnight-since-mariadb-10-6-update-and-s

반응형