그누보드 디비서버 변경시, #1364 - Field 'wr_comment_reply' doesn't have a default value 오류 해결 방법 > 개발

본문 바로가기
사이트 내 전체검색

개발

그누보드 디비서버 변경시, #1364 - Field 'wr_comment_reply' doesn't have a default value 오류 해결 방법

페이지 정보

profile_image
작성자 관리자 (119.♡.119.69)
댓글 0건 조회 2,607회 작성일 23-04-10 15:40

본문

#1364 - Field 'wr_comment_reply' doesn't have a default value


그누보드를 새 서버로 이전한 후에 글쓰기가 안되는 현상이 발생했다.

오류 메시지가 없어서, 처음엔 SELinux 를 의심했는데, SELinux 를 허용한 후에도 같은 증상이 발생한다.



# 원인


MariaDB 가 버전업이 되면서 Setting SQL_MODE 의 기본값이 달라졌다.

https://mariadb.com/kb/en/sql-mode/

문제는 STRICT_TRANS_TABLES 가 기본값이 들어갔다는 것이다.

STRICT_TRANS_TABLES,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION


그리고, MySQL 에서도 버전이 높아지면서 같은 현상이 발생한다.

https://www.fun25.co.kr/blog/mysql-error-1364-solution/?page=5


원인은

테이블 생성시 필드에 default 값을 따로 지정을 안 해도 insert 시에 '' 처럼 자동으로 값이 들어갔는데,

STRICT_TRANS_TABLES 모드에서는 테이블 생성시에 default 값을 지정하지 않을 경우 insert 시에 오류가 발생한다.



# 문제점


그누보드 기본소스에서 wr_comment_reply 필드에 기본값이 없다.

그래서, 게시판 글쓰기에서 오류가 나고 글쓰기가 되지 않는다.

그누보드의 원본 소스가 수정이 되어야 할 듯 하다.
 



# 해결방법 1

각 테이블의 해당 컬럼들의  default 값을 변경한다.
```
alter TABLE g5_write_table alter column wr_comment_reply set DEFAULT '', alter column wr_facebook_user set DEFAULT '', alter column wr_twitter_user set DEFAULT '' ;
```
* 참고
https://stackoverflow.com/questions/61244466/how-to-set-multiple-default-constraint-to-multiple-columns-at-once-in-mysql



# 해결방법 2


https://xinet.kr/?p=2191

테이블이나 소스파일들을 수정할 수도 있지만, 오래된 소스파일들을 다 수정할 수가 없기 때문에,

디비에서 STRICT_TRANS_TABLES 모드를 제거하기로 한다.


/etc/my.cnf 파일의 [mysqld] 섹션에 아래의 내용을 추가한 후 mariadb 를 재시작한다.

sql_mode = NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION




# HeidiSQL 에서 변경 방법


DB 서버 선택 후 변수목록 에서 sql_mode 를 찾는다.

기본값이 'STRICT_TRANS_TABLES,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION' 로 되어 있으면,

더블클릭 후에 'ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION' 로 변경한 후에,

범위를 '전체' 로 한 후에 확인을 누른다.

추천0

댓글목록

등록된 댓글이 없습니다.

Total 385건 1 페이지
  • RSS
개발 목록
번호 제목 조회 추천 날짜
385446002-02
384579001-09
383708012-25
382605012-15
381654012-10
380314012-03
379331011-26
378339011-04
377861009-08
3761065008-11
3751161008-10
3741452007-10
373990007-03
3721356006-06
3711213004-23
3701179004-20
3692069004-19
368882004-12
3671465004-11
3661515004-11

검색


사이트 정보

Copyright © Baragi.Net. All rights reserved.