그누보드5를 utf8mb4 형식으로 설치 후기 > 자유게시판

자유게시판

그누보드5를 utf8mb4 형식으로 설치 후기 정보

그누보드5를 utf8mb4 형식으로 설치 후기

본문

씨아이보드 설치 및 운영 테스를 잠시 멈추고

그누보드를 이용한 utf8mb4 형식으로 설치 운영 테스트를 시작했습니다.

utf8 은 3byte로 저장되지만, 이모티콘 언어 Emoji 은 4byte로 저장이 됩니다.


앞으로 이모티콘 글자를 받지 않을수 없고, 스마트폰의 활용도가 늘어날수록 

이미티콘 글자는 더욱 늘것이기에 그누보드5도 그것으로 사용하고자 생각을 했습니다.


씨아이보드일때는 설치에 별 문제없이 utf8mb4 로 잘 되었던 기억이 있었으므로

그누보드도 별 문제 없겠지 하고 설치를 진행했습니다.


설치과정에서 에러가 두둥 뜨더군요


CREATE TABLE IF NOT EXISTS `g5_login` ( `lo_ip` varchar(255) NOT NULL default '', `mb_id` varchar(20) NOT NULL default '', `lo_datetime` datetime NOT NULL default '0000-00-00 00:00:00', `lo_location` text NOT NULL, `lo_url` text NOT NULL, PRIMARY KEY (`lo_ip`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4

1071 : Specified key was too long; max key length is 767 bytes

error file : /install/install_db.php


이게 뭐지? 구글을 검색해고 새로운 사실을 알게 되었습니다.


767 bytes 의 의미가 뭔지를

varchar는 767 byte 가 한계이고,

UTF8는 문자 당 3byte를 사용하므로 767 / 3 = 255 자 이며, 

UTF8mb4는 문자 당 4 바이트를 사용하므로 767/4 = 191 자 라는것을


그러므로 그누보드의 설치시 선언된 수많은 varchar(255)는 255 x 4 = 1020  > 767 보다 크므로 오류라는 의미였습니다.


그래서 그누보드의 설치파일을 비롯해서 adm 폴더에 있는 varchar(255) 를 varchar(191) 로 변경했습니다.


그리고 설치를 진행하니 이상없이 잘 되네요. ^^

물론 long 데이타가 가능하도록 mysql 설정을 변경할수도 있지만 일반 호스팅 사용자의 경우엔 불가능한 방법이므로 191 로 변경하는 것이 최선이더군요.


저장할때 255자를 체크하는 로직을 본것같은데, 그것을 191자로 변경도 해야하겠네요.


이상은 그누보드5를 utf8mb4 형식으로 설치를 진행 후기입니다.

그외 수정사항은 그누보드5 팁자료실에서 확인할 수 있습니다. ^^

추천
2

댓글 9개

mysql 버전이 어떻게 되나요?
mariadb 에서 작업해보니 255 값 이상으로 생성 되더군요
https://mariadb.com/kb/en/mariadb/varchar/
검색해보니

VARCHAR 열의 값은 가변 길이 문자열입니다. 길이는 MySQL 5.0.3 이전에는 0에서 255 사이의 값으로, 5.0.3에서 0에서 65,535 이상의 버전 으로 지정할 수 있습니다 . MySQL 5.0.3 이후의 VARCHAR의 유효 최대 길이는 최대 행 크기 (모든 컬럼에서 공유되는 65,535 바이트)와 사용 된 문자 세트의 영향을받습니다.
mariadb 설치후 my.cnf 에 innodb 관련 옵션을 추가후 설치하니 이상없이 설치가 되네요
라고 적었는데,,,  뭔가 더 필요하네요....  관련 내용 확인후 추가 댓글 남기겠습니다.
설치하신 버전이 최신 버전이었죠?
해피정님께서 이렇게 말씀해 주시니 분명 뭔가는 있는데요.
저도 올 초인가? 작년에 모바일은 모르지만 그래도
utf8mb4 방식으로 갈아 타야 하는구나 생각했습니다.
그래서 무작정 설치를 했는데요. 저는 이상 현상이 없었거든요.
다시 설치해 봐야겠습니다. ^^
설치 중 문제가 발생하면 말씀 주신 대처방법으로 대처하겠습니다!
감사합니다.
# mysql --version  은 다음과 같습니다. ^^
mysql  Ver 15.1 Distrib 10.1.26-MariaDB, for Linux (x86_64) using readline 5.1
 
table level 에서 ROW_FORMAT=DYNAMIC 또는 ROW_FORMAT=COMPRESSED 사용해야합니다.
ENGINE=InnoDB  DEFAULT CHARSET=utf8mb4 ROW_FORMAT=DYNAMIC;

참고자룟 http://www.popit.kr/mysql-index-column-size-too-large-error/
CentOS7 기준으로  아래와 같이 2줄을 추가하니 varchar(255) 도 잘 설치가 되네요
innodb_file_format=barracuda
innodb_large_prefix=on

[root@localhost ~]# vi /etc/my.cnf.d/server.cnf
[client]
default-character-set=utf8mb4

[server]
character-set-server=utf8mb4
log-bin=mariadb-bin
event-scheduler=ON

[mysqld]
character-set-client-handshake = FALSE
collation-server = utf8mb4_unicode_ci
#init-connect='SET NAMES utf8mb4'
character-set-server = utf8mb4
max_allowed_packet = 32M
slow_query_log
long_query_time = 2

[mariadb]
innodb_file_format=barracuda
innodb_large_prefix=on
전체 195,303 |RSS
자유게시판 내용 검색

회원로그인

진행중 포인트경매

  1. 참여71 회 시작24.04.19 15:40 종료24.04.26 15:40
(주)에스아이알소프트 / 대표:홍석명 / (06211) 서울특별시 강남구 역삼동 707-34 한신인터밸리24 서관 1404호 / E-Mail: admin@sir.kr
사업자등록번호: 217-81-36347 / 통신판매업신고번호:2014-서울강남-02098호 / 개인정보보호책임자:김민섭(minsup@sir.kr)
© SIRSOFT