2.1.18 이후 문서 (document) 설정 완료하기가 작동안합니다.
CMS/프레임워크 | Rhymix 2.1 |
---|---|
개발 언어 | PHP 8.3 |
안녕하세요.
문서 (document) 설정 완료하기 버튼을 클릭해도 설정이 완료되지 않습니다.
확장변수를 많이 쓰고있는 사이트가 있는데
해당 사이트에서만 이증상이 발생했습니다.
기존 확장변수는 뜨지 않네요.
게시판 설정에 해둔 확장변수 또한 뜨지 않습니다.
발생하는 에러 로그는
PHP Exception: Error #0 "Class "Rhymix\Modules\Board\Models\Features" not found" in modules/board/board.view.php on line 206
#0 /www/classes/module/ModuleObject.class.php(767): BoardView->dispBoardContent()
#1 /www/classes/module/ModuleHandler.class.php(703): ModuleObject->proc()
#2 /www/index.php(60): ModuleHandler->procModule()
입니다.

톰캣
Lv. 11
시대의 흐름에 뒤떨어지지 않도록 아주 천천히지만 노력하고 있습니다.
댓글 25
modules/board/models/Features.php 파일을 업로드하지 않으신 것 같습니다.
전체 파일에도 있고 변경분 파일에도 포함되어 있는데 왜 빠졌을까요?
그리고 서버 사양에 비해 데이터가 너무 많이 쌓여 있는 테이블은 ALTER TABLE 쿼리가 오래 걸려서
몇 분이 지나서야 설정 완료된 것으로 인식할 수도 있습니다.
전체 파일에도 있고 변경분 파일에도 포함되어 있는데 왜 빠졌을까요?
=>
해당 파일을 다시 업로드 하여도 동일한 증상입니다.
현재 WIFI 상태로 FTP로 업데이트 하다보니 문제가 발생한것 일 수도 있겠다 생각이 들어 퇴근 이후 다시 전체를 업로드 하여 테스트 해보겠습니다.
본문의 에러로그는 딱 2회 발생하고 이후에는 에러가 없는걸로 봐서 FTP 업로드하는 과정 그 찰나의 순간에 2회 발생한 에러같습니다.
2. 그리고 서버 사양에 비해 데이터가 너무 많이 쌓여 있는 테이블은 ALTER TABLE 쿼리가 오래 걸려서 몇 분이 지나서야 설정 완료된 것으로 인식할 수도 있습니다.
=>
확장변수 데이터가 많지는 않고 여러 유형별 항목이 10여개 설정되어있었습니다.
랜선 환경에서 다시 테스트 후 댓글 드리겠습니다.
감사합니다.
그 정보가 있다면 원인을 찾는데 조금 도움이 될까싶은데
DB에서 show create table rx_document_extra_keys 해보시겠어요? (rx_는 실제 접두사로 변경 가능)
CREATE TABLE `rx_document_extra_keys` (
`module_srl` bigint(20) NOT NULL,
`var_idx` bigint(20) NOT NULL,
`var_name` varchar(250) NOT NULL,
`var_type` varchar(50) NOT NULL,
`var_is_required` char(1) NOT NULL DEFAULT 'N',
`var_is_strict` char(1) NOT NULL DEFAULT 'N',
`var_search` char(1) NOT NULL DEFAULT 'N',
`var_default` text DEFAULT NULL,
`var_options` text DEFAULT '',
`var_desc` text DEFAULT NULL,
`eid` varchar(40) DEFAULT NULL,
UNIQUE KEY `unique_module_keys` (`module_srl`,`var_idx`)
) ENGINE=...후략...
이렇게 나와야 하고, 업데이트 전이라면 빨간색 부분은 없겠지만 나머지는 모두 똑같아야 합니다.
CREATE TABLE `rx_document_extra_keys` (
`module_srl` bigint NOT NULL,
`var_idx` bigint NOT NULL,
`var_name` varchar(250) COLLATE utf8mb4_unicode_ci NOT NULL,
`var_type` varchar(50) COLLATE utf8mb4_unicode_ci NOT NULL,
`var_is_required` char(1) CHARACTER SET latin1 COLLATE latin1_general_ci NOT NULL DEFAULT 'N',
`var_is_strict` char(1) COLLATE utf8mb4_unicode_ci NOT NULL DEFAULT 'N',
`var_search` char(1) CHARACTER SET latin1 COLLATE latin1_general_ci NOT NULL DEFAULT 'N',
`var_default` text COLLATE utf8mb4_unicode_ci,
`var_desc` text COLLATE utf8mb4_unicode_ci,
`eid` varchar(40) COLLATE utf8mb4_unicode_ci DEFAULT NULL,
UNIQUE KEY `unique_module_keys` (`module_srl`,`var_idx`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci
라고 나오네요.
`var_options` text DEFAULT '',
이부분이 누락된것 같습니다.
latin1 COLLATE latin1_general_ci 얘네들이 끼여있어서 못만드는건 가 싶기도하네요.
`module_srl` bigint NOT NULL,
`var_idx` bigint NOT NULL,
`var_name` varchar(250) NOT NULL,
`var_type` varchar(50) NOT NULL,
`var_is_required` char(1) NOT NULL DEFAULT 'N',
`var_is_strict` char(1) NOT NULL DEFAULT 'N',
`var_search` char(1) NOT NULL DEFAULT 'N',
`var_default` text,
`var_desc` text,
`eid` varchar(40) DEFAULT NULL,
UNIQUE KEY `unique_module_keys` (`module_srl`,`var_idx`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8mb3 |
조회 결과 이렇게 나왔습니다.
var_options 에서 추가 컬럼 생성이 안되나보네요.
수동으로 넣어봤는데
설정하기 버튼은 사라졌지만
기존 확장변수들은 여전히 안뜨네요 ㅠㅠ
다른 분이 올리신 글을 보니 캐시 파일 재생성으로 확장변수가 보인다는 내용이 있습니다.
앗 ㅎㅎ 그러네요 DB 추가 전에는 캐시파일 재생성 효과 없었는데(수십번 눌렀었음)
DB 수동으로 추가 후 캐시파일 재생성하고나니 이제는 보이네요!!(그 이후엔 그걸 깜빡하네요...ㅋㅋ)
노르아님도 잘해결 하셨을까요?
이렇게 해결하는 게 맞겠죠..?
모듈 설정 완료시 var_options 컬럼이 제대로 생성되지 않는 경우가 있는 모양이군요.
일단 수동으로 추가하고 캐시파일 재생성하면 정상화된다고 알고, 자동으로 안 되는 이유를 찾아 보겠습니다.
@톰캣 @노르아 디버깅에 도움을 주셔서 감사합니다.
db.type : mysql (innodb, utf8mb4)
db.version : 8.0.39-0ubuntu0.22.04.1
깃헙 master 브랜치에서 수정했습니다.
https://github.com/rhymix/rhymix/commit/75e9473724fb1c24bb1a93e7713fee9cdcd84fe9
같은 환경의 다른 서버에 수정하신 내용으로 업데이트 적용하니 정상 작동했습니다!
빠르게 해결해 주셔서 감사합니다!
이미 원인 파악 완료하신것 같지만
에러 발생한 서버
php : 8.3.12 (64-bit)
server : Apache/2.4.57 (Rocky Linux) OpenSSL/3.0.7
os : Linux 5.14.0-427.28.1.el9_4.x86_64
db.type : mysql (innodb, utf8mb4)
db.version : 8.0.36
업데이트 성공한서버
php : 8.3.12 (64-bit)
server : Apache/2.4.57 (Rocky Linux) OpenSSL/3.0.7
os : Linux 5.14.0-427.31.1.el9_4.x86_64
db.type : mysql (myisam, utf8) db.version : 11.5.2-MariaDB
사용중에 있습니다.
답변이 늦어죄송합니다.
네, MySQL 8.0이 문제였습니다. 그동안 MySQL과 MariaDB의 차이에 신경쓸 필요는 거의 없었는데, 이제 슬슬 실사용에 영향을 주는 차이가 생기기 시작하네요.
MySQL은 8.4는 물론 9.0까지 나왔고, MariaDB도 최근 11 버전대를 주력으로 밀고 있으니 마치 남북한의 언어처럼 점점 차이가 많이 느껴질 것 같습니다.
감사합니다.