db/mariadb

시놀로지 MariaDB 10.3 의 STRICT_TRANS_TABLES 해제

6미리 2022. 4. 13. 11:47

시놀로지에는 MariaDB 10.3 을 자체적으로 제공합니다.

도커가 좋네 뭐네 하지만, 어차피 DB만 설치하고 프로그램 만들어서 데이터 입출력만 하고 10.3이면 만족하는 사람에게는 원래 주던 패키지가 제일 좋습니다.

문제는 가끔 무언가 특정한 설정을 할때 이건 어떻게 하는가입니다.

이전에 PHP 5.3에서 돌던 프로그램;;;;;을 테스트 하려고 시놀로지 서버에서 돌려야 할 일이 생겼습니다.

(2022년에 5.6도 아니고 5.3버전 프로그램이 돌고 있습니다!!!)

 

5.6설치해서 어찌어찌 했는데, STRICT_TRANS_TABLES 설정때문에 입력 안되는 오류 뿜뿜합니다;;;

그래도 다행스러운건 지금건 테스트 용도고 서버도 테스트 서버니 해제하기로 합니다.

 

Incorrect integer value: '' for column .... 이런 오류입니다.

 

sudo -i​

먼저 root로 접속을 합니다.

 

cd /usr/local/mariadb10/etc/mysql
ll


total 12
drwxr-xr-x 2 root root 4096 Sep  7  2021 .
drwxr-xr-x 3 root root 4096 Jan 14  2018 ..
lrwxrwxrwx 1 root root   65 Sep  7  2021 my.cnf -> /volume1/@appstore/MariaDB10/usr/local/mariadb10/etc/mysql/my.cnf

cd 로 이동한후 ll을 해서 확인하면

자주 보던 my.cnf 파일을 실제로는 저 /volume1/@appstore/MariaDB10/usr/local/mariadb10/etc/mysql/my.cnf 위치에 있음을 확인 가능합니다. 시놀로지는 appstore에 대부분의 정보를 갖고 있습니다. 이동을 해봅니다. (안해도 됩니다.)

 

vi 로 my.cnf 파일을 열어보니 이 파일을 수정하지 말라고 합니다(DO NOT EDIT THIS FILE !!!)

또 저는 말을 잘 들으니 그 아래에 해당 위치에 my.cnf 파일을 만들면 된다 하니 만들어 갑니다.

 

# cd /var/packages/MariaDB10/etc

# ll
total 24
drwxr-xr-x  2 root root 4096 Apr 13 10:59 .
drwxr-xr-x 44 root root 4096 Apr  6 14:19 ..
-rw-r--r--  1 root root   33 Sep  7  2021 .mariadb.conf
-rw-r--r--  1 root root  202 Sep  7  2021 my_port.cnf
-rw-r--r--  1 root root  191 Jan  9  2020 synology.cnf

my.cnf 파일은 없습니다.

vi my.cnf

입력해서 파일을 생성합시다.

 

[mysqld]
sql_mode = ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION

 

원래는 아래 SQL을 실행하면

select @@SQL_MODE, @@GLOBAL.SQL_MODE;

[ STRICT_TRANS_TABLES,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION ]

위와 같이 STRICT_TRANS_TABLES 항목이 있습니다.

my.cnf 파일을 생성해서 저 부분만 빼고 나머지를 생성해서 my.cnf 파일을 생성했으므로 이제 적용이 될겁니다.

 

여기까지 왔는데 CLI에서 해도 되지만, 그래도 패키지센터에서 중지 및 시작을 지원해주므로 저는 패키지 센터에서 중지하고 재시작 했습니다.

 

이제 STRICT_TRANS_TABLES 이 없어진 것을 확인할 수 있습니다.

 

없으면 지금 당장 쓰기는 편하지만, 테스트 용도로 사용하고 운영에서는 안하는것이 좋을것 같습니다.

뭐 예전 프로그램을 돌리는거라면 어쩔 수 없겠지만요.