하나의 열이 보기에 다른 데이터 정렬로 끝납니다.
저는 좀 이상한 문제가 있습니다.데이터베이스가 utf8mb4_unicode_ci colation으로 설정되었습니다.데이터베이스 내의 (WooCommerce) 테이블도 마찬가지입니다.표의 열도 utf8mb4_unicode_ci입니다.
뷰를 생성하고 이제 계산된 필드 sku_class에 대해 다른 조합(autf8mb4_general_ci)을 가져옵니다.이것이 어떻게 가능한 걸까요?그리고, 더 중요한 것은, 어떻게 해결할 수 있을까요?
보기를 만들기 위한 단축 쿼리는 다음과 같습니다.
SET character_set_connection = 'utf8mb4';
CREATE VIEW vw_wc_product_details AS
SELECT
pm.sku,
CASE
-- manual fixes
WHEN pm.sku LIKE 'AB1404/%' THEN 'c'
-- default rules
WHEN pm.sku LIKE 'ABs__-_%' THEN 's'
WHEN pm.sku LIKE 'ABt__-_%' THEN 't'
WHEN pm.sku LIKE 'AB____/%' THEN 'pc'
WHEN ( SELECT COUNT(sku) FROM wp_wc_product_meta_lookup WHERE sku LIKE CONCAT(pm.sku, '/_%') ) >= 1 THEN 'p'
WHEN pm.sku LIKE 'AB____%' AND LENGTH(pm.sku) = 6 THEN 'c'
WHEN pm.sku LIKE 'AX%' AND LENGTH(pm.sku) >= 6 THEN 'm'
ELSE 'x'
END as sku_class
FROM wp_wc_product_attributes_lookup AS pa
LEFT JOIN wp_terms AS t ON pa.term_id = t.term_id
LEFT JOIN wp_wc_product_meta_lookup AS pm ON pa.product_id = pm.product_id
LEFT JOIN wp_posts AS p ON pa.product_id = p.ID
COLLATE 'utf8mb4_unicode_ci'
그SET character_set_connection = 'utf8mb4';
그리고.COLLATE 'utf8mb4_unicode_ci'
제가 받은 조합 오류의 불법적인 혼합으로 인해 라인이 추가되었고, 이로 인해 관련된 모든 조합을 이중으로 확인할 수 있게 되었습니다.
위의 댓글에서 @shadow가 제공한 입력을 기반으로, 저는 결국 추가했습니다.COLLATE 'utf8mb4_unicode_ci'
에게END as sku_class
라인, 그래서 그것은 지금 읽힙니다.END COLLATE 'utf8mb4_unicode_ci' as sku_class
.
이것은 내가 만든 뷰에 대한 트릭입니다.즉, PHP PDO 쿼리의 오류 메시지 없이 작동하지만 보조 보기 내에서 보기를 사용할 때 여전히 잘못된 조합 오류 메시지가 표시됩니다.
phpMyAdmin에서 2차 보기에 대한 오류 메시지를 제거하는 방법을 찾으면 이 게시물을 업데이트하겠습니다.
네 - 알았어요, 처음에 오류 메시지를 잘못 읽어서 제 질문의 잘못된 부분을 보고 있었어요.
사실 이 부분이 저를 괴롭힌 부분입니다.
case
when pd.sku_class not in ('s','t') then 'act'
그pd.sku_class
데이터베이스와 테이블의 모든 것이 utf8mb_dll_ci로 되어 있기 때문에 분명히 데이터 정렬 문제를 일으켰지만, 여전히 이유를 알 수 없습니다.서버 설정만 latin으로 되어 있기 때문에 그 이유일 것입니다.
어쨌든, 바꾸는 것.pd.sku_class not in ('s','t')
안으로not find_in_set( cast( pd.sku_class as char ), 's,t' )
속임수를 썼어요!
case
when not find_in_set( cast( pd.sku_class as char ), 's,t' ) then 'act'
그래서 이제 모든 것이 저에게 효과가 있습니다.이것이 미래에 다른 누군가에게도 도움이 되기를 바랍니다 :)
언급URL : https://stackoverflow.com/questions/75652938/one-column-ends-up-with-different-collation-in-view
'programing' 카테고리의 다른 글
오류 수정 방법:서버에서 받은 메시지를 구문 분석할 수 없습니다. (0) | 2023.08.24 |
---|---|
문자열에서 HTML 태그 제거 (0) | 2023.08.24 |
Git 원격:오류: 치명적: 프로토콜 오류: 잘못된 줄 길이 문자: Unab (0) | 2023.08.24 |
Android에서 읽기 전용 파일 시스템 (0) | 2023.08.24 |
jQuery: $().click(fn) 대 $().bind('click',fn); (0) | 2023.08.24 |