MySQL 5.7+ 환경 phpMyAdmin 그누보드 wrcontent 필드 변경 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 질의창을 이용한 필드 타입 변경
- phpMyAdmin 좌측 트리 메뉴에서 대상 데이터베이스명을 선택합니다.
- 상단 메뉴 중 SQL 질의창을 선택합니다.
- 아래의 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 TABLEg5write게시판IDCHANGEwrcontentwrcontentMEDIUMTEXT 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로 변경하면 신규 게시판 생성 시 적용됩니다.
- 대안:
함께 보면 좋은 글
- PHP 에러 제어 연산자(@) 사용법과 MySQL 에러 메시지 숨기기
- phpMyAdmin 접속 시 세션 저장 경로 및 퍼미션 오류 해결 방법
- 웹호스팅 환경별 phpMyAdmin 접속 경로 및 관리 도구 확인 방법
참고자료
기타 참고자료
- 이전글그누보드 자동등록방지 숫자가 보이지 않을 때 세션 폴더 권한 오류 해결 방법 26.10.03
- 다음글[G4] cheditor4 이미지 삽입 시 엑스박스(경로 오류) 해결 방법 26.10.02
댓글목록
등록된 댓글이 없습니다.