동적 컬럼이있는 mariadb utf8mb4에 대해 두 가지 질문이 있습니다.동적 컬럼 및 프로 시저가있는 mariadb utf8mb4
무엇보다도 나는 mariadb 버전 10.0을 사용하고 jdbc로 연결합니다.
- 가 편집 것을 따를 이모티콘 문자를 저장하기 위해, 내가 mariadb를 수정 /etc/my.cnf에
[mysqld를]
문자 집합 서버 = utf8mb4
정렬 서버 = utf8mb4_unicode_ci 수정 된 DB 테이블 문자 집합.
CREATE TABLE `MEMBER` ( `name` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci DEFAULT NULL, `regdate` datetime DEFAULT NULL, `sso_json` blob, ..(skip).. ) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;
JDBC 문자열
에서 삭제 입자제거 characterEncoding 매개 변수
-
을 : characterEncoding = UTF-8
그래서, 그것은 완벽을, 이모 지형 문자는 varchar 열에 ㅁ ccurately 저장되었습니다. 그러나 역동적 인 칼럼에서는 그렇지 않습니다. Ad-Hoc 쿼리 및 절차에서 column_create()는 그림 이모티 대신 물음표를 저장합니다.
다음 절차 샘플을 따르십시오.
CREATE DEFINER=`sample`@`%` PROCEDURE `SP_INSERT`(
inName varchar(500) CHARACTER SET utf8mb4
)
BEGIN
SET @pSql = CONCAT(' INSERT INTO SAMPLE_TBL ('
, ' name, sso_json '
, ') VALUES ('
, ' ?, COLUMN_CREATE(?, ?) '
, ') '
);
-- variables bind
SET @pName = inName;
SET @pKey = 'title';
-- prepare stmt
PREPARE pstmt FROM @pSql;
EXECUTE pstmt USING @pName, @pKey, @pName;
END
절차 결과 : { 'title', '?????'}.
그리고 임시 쿼리에서
,set names utf8mb4 collate 'utf8mb4_unicode_ci';
select 'test', column_json(column_create('name','test'));
결과 : 테스트 '|| {\ "name \": \ "test ???? \"}
결과 열은 정확하지만 column_json no입니다.
set names utf8;
select 'test', column_json(column_create('name','test'));
결과 : 테스트 || {\ "name \": \ "test \"}
이유를 모르겠습니다. 도와주세요, 제발.