Q&A

2.1.18 이후 문서 (document) 설정 완료하기가 작동안합니다.

2024.10.14 05:27
356
0
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

  • 2024.10.14 06:24 #1840953

    modules/board/models/Features.php 파일을 업로드하지 않으신 것 같습니다.

    전체 파일에도 있고 변경분 파일에도 포함되어 있는데 왜 빠졌을까요?

     

    그리고 서버 사양에 비해 데이터가 너무 많이 쌓여 있는 테이블은 ALTER TABLE 쿼리가 오래 걸려서

    몇 분이 지나서야 설정 완료된 것으로 인식할 수도 있습니다.

  • 2024.10.14 06:36 #1840959
    1. modules/board/models/Features.php 파일을 업로드하지 않으신 것 같습니다.
    전체 파일에도 있고 변경분 파일에도 포함되어 있는데 왜 빠졌을까요?
    =>
    해당 파일을 다시 업로드 하여도 동일한 증상입니다.
    현재 WIFI 상태로 FTP로 업데이트 하다보니 문제가 발생한것 일 수도 있겠다 생각이 들어 퇴근 이후 다시 전체를 업로드 하여 테스트 해보겠습니다.
    본문의 에러로그는 딱 2회 발생하고 이후에는 에러가 없는걸로 봐서 FTP 업로드하는 과정 그 찰나의 순간에 2회 발생한 에러같습니다.

    2. 그리고 서버 사양에 비해 데이터가 너무 많이 쌓여 있는 테이블은 ALTER TABLE 쿼리가 오래 걸려서 몇 분이 지나서야 설정 완료된 것으로 인식할 수도 있습니다.
    =>
    확장변수 데이터가 많지는 않고 여러 유형별 항목이 10여개 설정되어있었습니다.

    랜선 환경에서 다시 테스트 후 댓글 드리겠습니다.

    감사합니다.
  • 2024.10.14 07:12 #1840968
    저도 동일 증상이 발생합니다. modules/board/models/Features.php은 분명 업로드가 됐고 2시간이 지나도 document 세팅이 완료되어있지 않습니다.
  • 2024.10.14 07:23 #1840974
    혹시 이전에 설정된 확장변수 필드는 어디에 있을까요.
    그 정보가 있다면 원인을 찾는데 조금 도움이 될까싶은데
  • 2024.10.14 08:08 #1841007
    document 모듈에서 업데이트하는 것은 document_extra_keys 테이블에 원래 없던 컬럼 2개를 추가하는 것뿐입니다. 원래 있던 데이터는 모두 그대로 있습니다.
  • 2024.10.14 07:57 #1840994
    저도 3개의 사이트에 fileZilla를 통해 전체 파일 업로드 했는데 문서(Document) [설정 완료하기]가 작동하지 않네요.
  • 2024.10.14 08:15 #1841011

    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=...후략...

     

    이렇게 나와야 하고, 업데이트 전이라면 빨간색 부분은 없겠지만 나머지는 모두 똑같아야 합니다.

  • 2024.10.14 09:36 #1841020
    rx_document_extra_keys
    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 '',
    이부분이 누락된것 같습니다.
  • 2024.10.14 09:53 #1841025
    뭔가 언어셋팅인 CHARACTER SET
    latin1 COLLATE latin1_general_ci 얘네들이 끼여있어서 못만드는건 가 싶기도하네요.
  • 2024.10.14 09:57 #1841029
    |rx_document_extra_keys | CREATE TABLE `rx_document_extra_keys` (
    `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 |

    조회 결과 이렇게 나왔습니다.
  • 2024.10.14 10:03 #1841033
    저랑같네요

    var_options 에서 추가 컬럼 생성이 안되나보네요.
  • 2024.10.14 10:09 #1841037

    image.png

     

    수동으로 넣어봤는데

    설정하기 버튼은 사라졌지만

    기존 확장변수들은 여전히 안뜨네요 ㅠㅠ

  • 2024.10.14 11:04 #1841046
    https://xetown.com/questions/1840897

    다른 분이 올리신 글을 보니 캐시 파일 재생성으로 확장변수가 보인다는 내용이 있습니다.
  • 2024.10.14 11:07 #1841050

    앗 ㅎㅎ 그러네요 DB 추가 전에는 캐시파일 재생성 효과 없었는데(수십번 눌렀었음)
    DB 수동으로 추가 후 캐시파일 재생성하고나니 이제는 보이네요!!(그 이후엔 그걸 깜빡하네요...ㅋㅋ)

     

    노르아님도 잘해결 하셨을까요?

  • 2024.10.14 11:23 #1841057
    저도 var_options 컬럼을 수동으로 만들고 설정하라는 메시지는 사라졌습니다.
    이렇게 해결하는 게 맞겠죠..?
  • 2024.10.14 12:19 #1841063

    모듈 설정 완료시 var_options 컬럼이 제대로 생성되지 않는 경우가 있는 모양이군요.

    일단 수동으로 추가하고 캐시파일 재생성하면 정상화된다고 알고, 자동으로 안 되는 이유를 찾아 보겠습니다.

    @톰캣 @노르아 디버깅에 도움을 주셔서 감사합니다.

  • 2024.10.14 12:50 #1841068
    항상 감사드립니다.
  • 2024.10.14 13:19 #1841083
    혹시 사용하시는 DB 버전이 어떻게 되시나요? 예) MySQL 8.xxx, MariaDB 11.xxx 등등
  • 2024.10.14 13:33 #1841087
    아래 디비 환경에서도 같은 증상 발생합니다
    db.type : mysql (innodb, utf8mb4)
    db.version : 8.0.39-0ubuntu0.22.04.1
  • 2024.10.14 14:07 #1841091
    MySQL 8.0에서 컬럼 기본값 문제로 에러가 나고 있었군요.
    깃헙 master 브랜치에서 수정했습니다.
    https://github.com/rhymix/rhymix/commit/75e9473724fb1c24bb1a93e7713fee9cdcd84fe9
  • 2024.10.14 15:47 #1841117
    저도 MySQL 8버전이었습니다.
    같은 환경의 다른 서버에 수정하신 내용으로 업데이트 적용하니 정상 작동했습니다!
    빠르게 해결해 주셔서 감사합니다!
  • 2024.10.14 15:26 #1841107

    이미 원인 파악 완료하신것 같지만

     

    에러 발생한 서버

    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


    사용중에 있습니다.
    답변이 늦어죄송합니다.

  • 2024.10.14 16:25 #1841122

    네, MySQL 8.0이 문제였습니다. 그동안 MySQL과 MariaDB의 차이에 신경쓸 필요는 거의 없었는데, 이제 슬슬 실사용에 영향을 주는 차이가 생기기 시작하네요.

     

    MySQL은 8.4는 물론 9.0까지 나왔고, MariaDB도 최근 11 버전대를 주력으로 밀고 있으니 마치 남북한의 언어처럼 점점 차이가 많이 느껴질 것 같습니다.

  • 2024.10.14 16:51 #1841129
    슬슬 MariaDB 11 버전으로 넘어갈 생각을 해봐야 겠습니다.
    감사합니다.
  • 2024.10.14 12:58 #1841072
    항상 감사합니다!