BOARD

문제 해결

MySQL 5.7+ 환경 phpMyAdmin 그누보드 wrcontent 필드 변경 1067 에러 해결

페이지 정보

profile_image
작성자 최고관리자
댓글 0건 조회 16회 작성일 26-10-02 17:53

본문

MySQL 5.7+ 환경 phpMyAdmin 그누보드 wr_content 필드 변경 1067 에러 해결

MySQL 5.7 이상 버전과 phpMyAdmin을 사용하는 그누보드 운영자가 게시판 본문(wr_content) 필드 타입 변경 시 발생하는 #1067 에러의 원인을 파악하고, 데이터베이스와 소스코드 수준에서 글자수 제한을 해제하는 방법을 확인할 수 있습니다.

MySQL 5.7 이상 phpMyAdmin 1067 에러 해결 방법

MySQL 5.7 이상 버전에서 phpMyAdmin을 통해 게시판 본문 내용(wr_content) 필드 타입을 변경할 때 발생하는 #1067 - Invalid default value for 'wr_datetime' 에러는 MySQL 5.7 버전부터 엄격해진 정책과 기본값 설정 충돌로 인해 발생합니다. 이를 우회하기 위해 UI 방식 대신 SQL 질의창을 직접 이용해야 합니다.

1. SQL 질의창을 이용한 필드 타입 변경

  1. phpMyAdmin 좌측 트리 메뉴에서 대상 데이터베이스명을 선택합니다.
  2. 상단 메뉴 중 SQL 질의창을 선택합니다.
  3. 아래의 ALTER TABLE 쿼리를 입력하고 실행 버튼을 클릭합니다.
    ALTER TABLE `g5_write_테이블명` CHANGE `wr_content` `wr_content` mediumtext NOT NULL;
    • 주의: g5_write_테이블명에서 뒷부분 테이블명은 실제 게시판 ID로 변경해야 합니다. (예: 자유게시판 ID가 free인 경우 g5_write_free로 수정)

2. 65,536자 글자 수 제한 해제 (선택 조건)

데이터베이스 필드를 mediumtext 등으로 변경하더라도 PHP 소스 코드에 제한이 남아있으면 긴 글이 잘릴 수 있으므로 다음 파일들을 함께 수정합니다.

  • /bbs/write_update.php 파일 수정20~23줄 부근의 substr 제한 로직을 수정하여 길이를 늘리거나 제한을 해제합니다.
  • /lib/editor.lib.php 파일 수정11줄 부근의 <textarea> 태그 내 maxlength="65536" 속성을 제거하거나 수정합니다.

그누보드 65,536자 이상 긴 글 저장 제한 해제 방법

데이터베이스의 wr_content 필드 타입을 MEDIUMTEXT나 LONGTEXT로 변경한 이후에도 소스코드 상의 글자수 제한 때문에 글이 잘리는 현상을 막으려면 /bbs/write_update.php 파일과 /lib/editor.lib.php 파일을 수정해야 합니다.

1. /bbs/write_update.php 파일 수정

/bbs/write_update.php 파일의 20~23줄 부근에 있는 wr_content 글자수 제한 로직을 변경합니다.

  • 누구나 긴 글을 작성할 수 있게 하려면 아래와 같이 $wr_content = trim($_POST['wr_content']); 형태로 수정합니다.
if (isset($_POST['wr_content'])) {
 //$wr_content = substr(trim($_POST['wr_content']),0,65536);
 $wr_content = trim($_POST['wr_content']);
 $wr_content = preg_replace("#[\\\]+$#", "", $wr_content);
}
  • 관리자만 긴 글을 작성할 수 있게 하려면 조건문을 추가합니다.
if (isset($_POST['wr_content'])) {
 if ($is_admin) {
 $wr_content = trim($_POST['wr_content']);
 } else {
 $wr_content = substr(trim($_POST['wr_content']),0,65536);
 }
 $wr_content = preg_replace("#[\\\]+$#", "", $wr_content);
}

2. /lib/editor.lib.php 파일 수정

에디터 영역의 글자수 제한 속성(maxlength)을 제거하거나 수정해야 합니다.

  • 누구나 제한 없이 작성할 수 있게 하려면 11줄 부근의 maxlength="65536" 속성을 제거합니다.
return "<textarea id=\"$id\" name=\"$id\" style=\"width:100%;\">$content</textarea>";
  • 관리자만 제한을 해제하려면 조건문을 적용합니다.
if ($is_admin) {
 return "<textarea id=\"{$id}\" name=\"{$id}\" style=\"width:100%;\">{$content}</textarea>";
} else {
 return "<textarea id=\"{$id}\" name=\"$id\" style=\"width:100%;\" maxlength=\"65536\">{$content}</textarea>";
}

3. 향후 생성되는 게시판 설정 (선택 사항)

앞으로 새로 생성되는 게시판의 본문 필드가 기본적으로 긴 내용을 수용하도록 하려면 /adm/sql_write.sql 파일의 12라인 내용을 아래와 같이 수정합니다.

`wr_content` longtext NOT NULL,

MySQL 5.7 이상 phpMyAdmin 1067 에러 해결

  • 상황: MySQL 5.7 이상에서 phpMyAdmin을 통해 wr_content 필드 타입을 변경할 때 발생하는 #1067 에러.
  • 원인: MySQL 5.7부터 강화된 SQL_MODE 정책과 기본값 설정 충돌.
  • 해결: UI 대신 SQL 질의창에서 ALTER TABLE g5write게시판IDCHANGEwrcontent wrcontent MEDIUMTEXT NOT NULL; 쿼리 직접 실행.
  • 추가 조치: DB 변경 후에도 글이 잘린다면 /bbs/write_update.php의 substr 제한 해제 및 /lib/editor.lib.php의 maxlength 속성 제거 필요.

실전 FAQ

  • Q. DB 필드를 변경했는데도 긴 글이 잘립니다.
    • 막히는 점: DB 필드 타입만 변경하고 PHP 소스 코드의 글자 수 제한 로직을 수정하지 않은 경우입니다.
    • 대안: /bbs/write_update.php에서 substr 제한을 제거하고, /lib/editor.lib.php의 maxlength="65536" 속성을 삭제하거나 수정하십시오.
  • Q. 향후 생성되는 게시판에도 긴 글 제한을 없애려면?
    • 대안: /adm/sql_write.sql 파일 내 wr_content 정의를 longtext NOT NULL로 변경하면 신규 게시판 생성 시 적용됩니다.

함께 보면 좋은 글

참고자료

기타 참고자료

댓글목록

등록된 댓글이 없습니다.