최초 컴포저를 설치하고 나서


The zip extension and unzip command are both missing, skipping.


이런 에러가 나온다면


데비안계열의 경우

apt-get install unzip


레드헷계열의 경우

yum install unzip    (아마도?)



해결될것이다.



출처

https://github.com/composer/composer/issues/4943


WRITTEN BY
rabbbit
필기

,

mysql strict mode 해제

Mysql 2016. 8. 1. 14:52

mac 로컬 환경에 mysql을 설치해서 데이터를 마이그레이션 하는도중에


datetime로 선언된 필드에서


Field 'expired' doesn't have a default value:


이런 에러가 났다.


어느정도 삽질후에 datetime 필드를 not null 로 했을때 insert 혹은 update를 하면서 아무값도 넣지 않으면


에러가 나는 것을 확인할수 있었는데, 실제 서비스에도 저렇게 되어있어서 datetime 필드의 설정을 바꿀수도없고... 다른 해결책을 찾다가


발견한 것이 있는데


mysql strict mode라는 것이다. 


이건 mysql 을 설치하면 기본으로 설정되어있는것인데, 


이게 무엇인지 단적으로 설명하자면 


not null로 된 필드에 값을 넣지 않으면 에러가 나고 값이 들어가지 않게 하는 것이다.


mysql korea문서에는 이렇게 써있다.


스트릭트 모드는 MySQL가 유효하지 않거나 누락된 (missing) 데이터를 처리하는 방법을 제어한다하나의 값은 여러 가지 이유로 유효하지 않게 된다예를 들면컬럼에 대해 틀린 데이터 타입을 가질 수가 있거나또는 범위를 벗어날 수도 있다삽입될 새로운 열이 자신의 정의문 안에서 명확한 DEFAULT 구문이 없는 -NULL컬럼 값을 가지고 있지 않을 때 데이터는 누락 된다. (NULL 컬럼의 경우NULL은 값이 누락되는 경우에 삽입된다.)


즉 값을 안정성있게 넣는 것이라는건데


이걸 알고나서 개인적으로 이 모드를 사용하는게 좋은게 아닐까라는 짧은 생각이 든다.


어찌댔든 현재 내 환경을 그렇지 않으므로 이 모드를 해제 해야 하는데


*nix계열의 운영체제에서는

my.cnf 파일을 찾아서 sql_mode에 STRICT_TRANS_TABLES 라는 옵션을 지우고 mysql을 재시작하면 이 옵션은 꺼지게된다.


windows계열은

my.ini파일을 찾아서 똑같이 하면된다고 한다.


혹시나  orm을 쓰는 개발자는 orm자체에서도 이 옵션이 설정될 수도 있으므로 my.cnf에서 설정을 끈후에 orm에서도 disable명령어가 있는지 찾아보는게 좋은것 같다.


왜냐면 나도 active-record를 쓰는데 mysql옵션을 껐는대도 계속 저옵션에 걸려 에러가 났는데 알고보니 active-record에서도 저 옵션을 켜서 사용 하고 있었다 


WRITTEN BY
rabbbit
필기

,

맥에서 잘되던 mysql이 갑자기 start가 안되면서

ERROR! The server quit without updating PID file

이런 에러를 뿜어낸다..


일단 에러 로그를 보니

2016-08-01T03:00:36.392061Z 0 [ERROR] InnoDB: The innodb_system data file 'ibdata1' must be writable

2016-08-01T03:00:36.392116Z 0 [ERROR] InnoDB: The innodb_system data file 'ibdata1' must be writable

2016-08-01T03:00:36.392143Z 0 [ERROR] InnoDB: Plugin initialization aborted with error Generic error

2016-08-01T03:00:36.696313Z 0 [ERROR] Plugin 'InnoDB' init function returned error.

2016-08-01T03:00:36.696353Z 0 [ERROR] Plugin 'InnoDB' registration as a STORAGE ENGINE failed.

2016-08-01T03:00:36.696366Z 0 [ERROR] Failed to initialize plugins.

2016-08-01T03:00:36.696374Z 0 [ERROR] Aborting


ibdata1의 권한이 쓰기권한이여야 한다고 하는데 나는 권한을 건드린적이 없다..


건드린게 없는게 이상한 현상인데 해결 방법은 더 이상하다.


/usr/local/var/mysql


디렉토리를 777권한을 주면해결이 된다. 이게 대체 왜 되는건지 모르겠다..

그와 더불어 갑자기 잘되던게 왜 안되는건지도 모르겠다


나중에 시간을 들여서 찾아봐야겠다

'Mysql' 카테고리의 다른 글

mysql strict mode 해제  (0) 2016.08.01
mysql]insert 서브쿼리 사용법  (0) 2015.02.23
mysql] 쿼리문에서 문자열 붙이기  (0) 2015.02.23
[MySql] alter  (0) 2014.08.22
mysql 테이블 데이타 복사  (0) 2014.07.08

WRITTEN BY
rabbbit
필기

,