phpmyadmin에서 필드를 열면 mySQL 데이터베이스가 변경되지만 변경되지 않습니다.
워드프레스 사이트와 데모 데이터가 설치된 템플릿을 가지고 있습니다.phpmyadmin에서 몇 개의 필드를 열면 변경을 하지 않고 다른 필드를 선택해도 필드가 갱신됩니다.문제 없습니다. 아무것도 업데이트되지 않습니다. 변경 사항이 없기 때문입니다.그래서 무슨 일이 일어났는지 워드프레스 사이트의 앞부분이 엉망진창이 되는 거죠. 왜냐하면 제가 단순히 조사하던 분야에서 뭔가 바뀌었기 때문입니다.해당 필드에는 HTML 코드의 큰 청크가 포함되어 있으며, 그 안에 많은 문자 및 " 문자가 포함되어 있습니다.
필드를 열고 닫으면 update 명령어가 필드에 있는 내용을 해석하고 "와 "가 곳곳에 표시됩니다.내가 틀릴 수도 있다.어쨌든 mysql 쉘 쿼리 또는 phpmyadmin으로 데이터를 복사하여 이전과 같이 정확하게 DB로 업데이트하면 뭔가 변화하고 있지만 메모장++ 비교 플러그인을 사용하여 가능한 한 데이터를 살펴보더라도 변경되지 않습니다.
이게 말이 되나요?미치겠어!
로켓 테마를 사용한 워드프레스 사이트입니다. 갠트리 틀은 익숙한 사람을 위해...
다음은 이 문제의 비디오 시연입니다.
https://www.youtube.com/watch?v=ljXTDKKmUUw
네, 정답은 데이터가 필드 내의 배열에 저장될 경우 먼저 읽으려면 php로 직렬화를 해제하고 쓰기 위해 php로 다시 직렬화해야 한다는 것입니다.
이것은 워드프레스의 일반적인 문제이며, URL 길이를 변경하는 데이터베이스 이행을 시도하면 문제가 발생합니다.
이 문제에 대한 자세한 내용은 http://wpgarage.com/tips/data-portability-and-data-serialization-in-wordpress/를 참조하십시오.
문제의 데이터베이스 엔트리는 단순히 "콜론 묶음 텍스트"를 포함하는 것이 아니라 PHP 시리얼화 데이터입니다.맞아, 텍스트지만, 이건 일종의 이진법으로 여겨져야 해.예를 들어 단어를 더 길거나 짧은 단어로 변경하는 등 직렬화된 데이터를 임의로 변경하면 데이터 구조가 깨집니다.이후 관련 코드가 데이터의 시리얼화를 해제하려고 하면 실패합니다.도덕성: 시리얼화된 데이터를 부주의하게 편집하지 마십시오.그렇지 않으면 데이터가 파손됩니다.
PHP 문서에서 인용:직렬 문자열은 TEXT 필드에 저장해서는 안 됩니다.
이는 늘 바이트를 포함할 수 있는 바이너리 문자열이므로 저장 및 처리해야 합니다.예를 들어 serialize() 출력은 일반적으로 CHAR 또는 TEXT 필드가 아닌 데이터베이스의 BLOB 필드에 저장해야 합니다.
어쨌든 직렬화된 값의 규칙을 준수하거나 대응하는 구조 정보를 조정하는 경우 PHP 직렬화된 데이터를 편집할 수 있는 방법이 있습니다.이를 위한 전문 에디터나 온라인 툴도 있습니다(테스트는 하지 않았습니다).
시리얼화된 데이터의 구조에 대한 자세한 내용은 php.net의 링크된 함수 문서에서 egingell의 상위 코멘트를 참조하십시오.이 문서는 serialize()'ed 값의 구조를 설명합니다.
문자열 -> s: size: 값;
정수 -> i:값;
Boolean -> b:value; ("true" 또는 "false"는 저장되지 않고 "1" 또는 "0"은 저장됨)
특수한 순서 -> N;
어레이 -> a: 사이즈: {키 정의;값 정의;(요소당 반복)}
오브젝트 -> O: stren(개체명): 오브젝트명: 오브젝트사이즈: {s: stren(속성명): 속성명: 속성정의;(속성별 반복)}
문자열 값은 항상 큰따옴표로 묶습니다.
어레이 키는 항상 정수 또는 문자열입니다.
"value"는 "s:0:", "s:5:"value";,
"true => 'value'는 'i:1;s:5:"value";,
"false => 'value'는 'i:0;s:5:"value";,
"array(내용에 관계없이)" => "value"는 배열을 키로 사용할 수 없기 때문에 "sarray offset type" 경고에 해당합니다.
단, 배열을 포함하는 변수를 키로 사용하면 's:5:"Array";s:5:"value";'에 해당하며 객체를 키로 사용하려고 하면 어레이를 사용하는 경우와 동일한 동작이 발생합니다.
동영상을 보니 꽤 오래된 버전의 PMA를 사용하고 있는 것 같습니다.PMA, PHP, MySQL을 업데이트하여 해당 버전에 문제가 있는지 확인합니다.
언급URL : https://stackoverflow.com/questions/20330924/mysql-database-changes-when-i-open-a-field-in-phpmyadmin-but-i-dont-make-any-c
'programing' 카테고리의 다른 글
React.createElement' children 파라미터 사용방법(jsx 없음) (0) | 2023.03.08 |
---|---|
AngularJS - ng-repeat에 의해 생성된 라디오 버튼 선택 시 모델이 업데이트되지 않음 (0) | 2023.03.08 |
http 설정 방법모든 API 엔드포인트에 대해 ResponseWriter Content-Type 헤더를 글로벌하게 사용하시겠습니까? (0) | 2023.03.08 |
jQuery.ajax - 모든 요소를 수동으로 입력하지 않고 형식으로 전송합니다. (0) | 2023.03.08 |
유형 '{}'은 유형 'IntrinsicAttributes & IntrinsicClassAttributes'에 할당할 수 없습니다. (0) | 2023.03.08 |