XE에서 라이믹스로 바꿀 때 필요할 수 있는 DB 설정

  XpressEngine(줄여서 XE)는 현재 기능 개발이 멈춘 것으로 보이는데, 라이믹스(Rhymix)가 그 대안으로 떠오른 지가 좀 되었다.

  XE로 운영하던 그물누리집은 파일을 덮어 씌우는 방법으로 라이믹스로 바꿀 수 있다. 하지만 라이믹스로 옮겨 가는 과정에서 DB나 끼워 쓰는 도구 쪽에서 넘기 힘든 일을 겪을 수도 있다. 아래에 보이는 관리 화면의 모듈 DB(데이터베이스, 자료기지) 설정들이 걸림돌이 될 수 있다.

라이믹스 모듈 DB 설정 - 업데이트된 모듈의 설정을 완료해야 합니다.
라이믹스 모듈 DB 설정

  '설정 완료하기'를 딸깍해서 모두 금방 넘어가 주면 참 좋겠지만, 아래처럼 HTTP 500 오류가 뜨며 설정을 마치지 못하는 항목이 나오는 때도 있다.

HTTP ERROR 500 - 지금 이 페이지가 작동하지 않습니다. www.□□□.kr이 현재 해당 요청을 처리할 수 없습니다.
HTTP ERROR 500

  이렇게 HTTP 500 오류가 나며 설정 완료가 되지 않으면, 문제가 일어나는 DB 테이블을 살펴서 오류가 나는 원인을 찾아야 할 수 있다. 전체 DB 설정과 기본값도 점검해 볼 필요가 있다.

1) DB 엔진

  처음에 XE의 DB 엔진은 MyiSAM이었지만, XE가 개발되면서 InnoDB를 쓰는 경우가 늘었다. XE를 오래 운영했다면 테이블들의 DB 엔진 종류가 MyiSAM과 InnoDB이 섞여 있을 수도 있다. 알맞은 DB 엔진으로 바꾸어 준다.

2) 문자 집합 (Character Set)

  XE에서는 DB 테이블들의 기본 문자 집합이 utf8이고 데이터 정렬 방식은 utf8_general_ci이다. 하지만 라이믹스는 기본 문자 집합이 utf8mb4이고 데이터 정렬 방식은 utf8mb4_unicode_ci이다.

  MySQL에서 utf8을 문자 집합으로 쓴다면, UTF-8 부호화 방식으로 1~3바이트로 나타내는 유니코드의 다국어 기본 평면(BMP)에 들어가는 문자들을 다룰 수 있다.

  😀 같은 에모지(emoji)나 잘 쓰이지 않는 상형 문자처럼 유니코드의 보충 문자 평면들(SMP, SIP, SSP 등)에 들어가는 문자들은 UTF-8 부호화 방식으로 4바이트를 써서 나타낸다. 이 문자들을 '😀' 같은 참조형 표현을 쓰지 않고 그대로 나타내려면 utf8mb4을 써야 한다.

  테이블들의 데이터 정렬 방식을 살펴 다른 방식으로 지정되었다면 utf8mb4_unicode_ci로 바꾸어 준다.

3) 행 형식 (Row Format)

  테이블에서 COMPACT나 다른 행 형식을 쓰고 있으면 DYNAMIC으로 바꾸어 준다.

  다른 행 형식으로 써도 당장은 문제 없이 잘 돌아갈 수는 있지만, 문자열 길이를 비롯한 여러 가지 요인들을 따진다면 DYNAMIC이 드러나는 문제를 가장 적게 일으킬 수 있는 행 형식이다.

4) xe_sequence 테이블의 seq 열 자동 누적

SQLSTATE[23000]: Integrity constraint viloation: 1048 Column 'seq' cannot be null
SQLSTATE[23000]: Integrity constraint viloation: 1048 Column 'seq' cannot be null

  라이믹스로 바꾸고 나서 글을 저장할 때에 이런 알림글이 뜨며 글이 저장되지 않기도 한다. xe_sequence 테이블의 seq 열이 자동 누적(auto increment)이 되게 해 주면 풀 수 있는 문제이다.

ALTER TABLE `xe_sequence` CHANGE `seq` `seq` BIGINT(64) NOT NULL AUTO_INCREMENT;

  PHPMyadmin을 쓸 수 있다면, 아래 그림에서처럼 'A.I'(Auto Increment)에 갈매기표를 해 주고 '저장'을 눌러 준다.

[PHPMyAdmin] xe_sequence 테이블의 구조에서 seq 열을 찾아 '변경'으로 들어감
[PHPMyAdmin] xe_sequence 테이블의 구조에서 seq 열을 찾아 '변경'으로 들어감
[PHPMyAdmin] seq 열에서 A.I(auto increment)에 갈매기표를 함
[PHPMyAdmin] seq 열에서 A.I(auto increment)에 갈매기표를 함
[PHPMyAdmin] seq 열에 A.I(auto increment) 설정을 마친 모습
[PHPMyAdmin] seq 열에 A.I(auto increment) 설정을 마친 모습

5) 테이블을 고칠 수 없거나 번거로우면

  권한 문제가 걸리거나 잠금(lock)이 걸려서 테이블을 고칠 수 없는 때도 있다. 그런 때에는 DB를 백업했다가 복원하는 방법이 간편할 수 있다. 앞에서 이야기한 내용대로 백업한 SQL 파일을 고쳐서 복구하면 일이 줄어들 수 있다.

  아래에서 xe와 라이믹스의 같은 테이블을 만드는 SQL 파일 내용을 견주어 볼 수 있다. (XE 테이블은 언제 어느 판으로 설치했는지에 따라 내용이나 구성이 다를 수 있다.)

CREATE TABLE `xe_addons_site` (
`site_srl` bigint(11) NOT NULL DEFAULT '0',
`addon` varchar(250) NOT NULL,
`is_used` char(1) NOT NULL DEFAULT 'Y',
`is_used_m` char(1) NOT NULL DEFAULT 'N',
`extra_vars` text,
`regdate` varchar(14) DEFAULT NULL,
UNIQUE KEY `unique_addon_site` (`site_srl`,`addon`),
KEY `idx_regdate` (`regdate`)
) ENGINE=MyiSAM DEFAULT CHARSET=utf8 ROW_FORMAT=COMPACT;
CREATE TABLE `rx_addons_site` (
`site_srl` bigint(20) NOT NULL DEFAULT 0,
`addon` varchar(191) COLLATE utf8mb4_unicode_ci NOT NULL,
`is_used` char(1) COLLATE utf8mb4_unicode_ci NOT NULL DEFAULT 'Y',
`is_used_m` char(1) COLLATE utf8mb4_unicode_ci NOT NULL DEFAULT 'N',
`extra_vars` text COLLATE utf8mb4_unicode_ci DEFAULT NULL,
`regdate` varchar(14) COLLATE utf8mb4_unicode_ci DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;

  'CHARSET=utf8'을 'CHARSET=utf8mb4'으로 'utf8_general_ci'를 'utf8mb4_unicode_ci'로 바꾸는 식으로 SQL 파일의 문자열들을 고쳐 올리는 방법을 쓸 수 있다.

참고한 곳

글 걸기 주소 : 이 글에는 글을 걸 수 없습니다.

덧글을 달아 주세요