제목 | ciboard 설치 관련 질문입니다. 일주일째 미칠것같습니다.. | ||
---|---|---|---|
카테고리 | 기타 솔루션 | ||
글쓴이 | 경미임 | 작성시각 | 2020/03/12 23:41:56 |
|
|||
window10 1909 ftp-server를 운영중이고 wsl우분투와 docker가 있지만 컨테이너 안올리고 순수 윈도우에 apm을 설치했습니다. php 7.4.3 mysql 8.0.19 apach 2.4 해당 버전으로 설치를 했습니다. mysql 비밀번호도 native로 잘만들고 모듈도 잘설치하고 어찌저찌 삽질해가면서 인스톨에 접근성공 했습니다. 그리고 설치까지 완료 했습니다. 그런데 계속 흰화면만 나와서 값을 일일히 찍어가며 들어가며 확인해보았습니다. _system/core/codeigniter.php의 532번째줄 call_user_func_array 여기서 에러가 났습니다.
532] call_user_func_array(array(&$CI, $method), $params);여기서
$method는 _remap $param은 Array ( [0] => index [1] => Array ( ) ) $CI는 Main Object ( [models:protected] => Array ( [0] => Board ) [helpers:protected] => Array ( [0] => form [1] => array ) ... [class] => main [method] => index [directory] => [default_controller] => main [translate_uri_dashes] => [enable_query_strings] => [uri] => CI_URI Object ( [keyval] => Array ( ) [uri_string] => [segments] => Array ( ) [rsegments] => Array ( [1] => main [2] => index ) .....
532번째줄의 call_user_func_array(array(&$CI, $method), $params);여기만 넘어가면 basepath부터 모든값이 안찍혀서 이부분에 문제가 있다 싶어서 위에서 uri오브젝트에서 rsegments 긁어서 배열에 넣고하는 알고리즘까지 전부 돌아다니며 봣는데 뭐가 문제인지 당최모르겟습니다.. php7이랑 mysql8에 설치해서 잘쓰시는 분이 있는거 같은데 안되서.. 스스로 고쳐도 보고 하다가 도저히 안되던 찰나 develop으로 설정하면 문제되는 부분을 알수있던게 딱 생각나서 틀자마자 멘붕.. develop모드로 가니 첨부파일에 있는거처럼 에러넘버 1525에 incorrect DATE value: '0000-00-00'에 _system/database/DB_driver.php의 라인넘버 691번을 알려주더군요. 전혀 다른곳에 문제가 있어서 또 찾고찾고 찾아보니 프로덕션에서 흰화면이 뜨면 대게 db문제라는 것을 알아냇고 0000-00-00저게 NULL로 수정하거나 sql mode를 수정해야된다는 자료들을 찾았고 691번라인에가서 이것저것 해보기도 하다가 결국 sql mode를 수정하는 방법으로 갔습니다. 근데 my.ini를 이용해 sql-mode='' 하면 서버가 멈춥니다. 새로설치해보면 mysql이 동작을 안하구요. 그래서 set 변수로도 해보고 했는데 자꾸 mysql이 죽어서 재설치만 무한 반복하다 지쳐버려서 도움을 좀 구해보려고 합니다.. 도와주세요. 선배님들..ㅠㅠ |
|||
첨부파일 |
Untitled-1.png (103.1 KB) |
||
다음글 | Model에서 database 연결부 에러.. (1) | ||
이전글 | CI4 에 rest server (github)설치시 ... (2) | ||
변종원(웅파)
/
2020/03/13 08:54:52 /
추천
1
|
경미임
/
2020/03/13 15:09:04 /
추천
0
웅파// stackoverflow에 비슷한 증상들 중 sql_mode바꾸는 부분은 거의다 따라해본거 같은데 똑같이죽습니다. mysql설치는 성공하는데 서비스 실행이 불가능합니다. 커맨드 넣어도 중지되어버리구요. 안되길래 버전다른것도 죄다 넣어봤습니다. 당연 안됏지만..ㅋㅋㅋ 아무튼 뭔가 제가 잘못타이핑한게 있엇던것 같습니다. 아 그리고 어제 제가 여기 글올리기전에 최종적으로 참고했던곳은 https://dev.mysql.com/doc/refman/8.0/en/sql-mode.html 여기 mysql에서 제공해주는 문서 참고해서 하려고 했는데 여기도 서버가 계속 죽어서 안되길래 언더바랑 하이픈도 바꿔보고 별의별짓을 다했네요. sql_mode 별로 바꿔가면서 테스트도 좀 해보고 싶었는데 서버가 시작하지를 못하니.. 디폴트mode를 보면 strict 관련된것만 빼면 되겠다 싶엇는데.. 아무튼 명쾌하게 해결이 안되서 답답하긴한데 ciboard 그냥 어떤식으로 짜여져있나 좀 만져보기만 하고 ci4공부할거라.. 일단 mysql5.7로 설치했네요. 그랬더니 sql mode 건드릴필요없이 성공. 근데 5.7도 값찍어보니 strict가 기본활성화라 또 멘붕오네요. strict문제가 아닐수도 있겠다는 생각이.. 뭔가 5.7이랑 8이랑 바뀐내용에대해 공부해봐야 될거같아요. 나중에 8로 다시 도전해봐야겠습니다. native보다 쉽겟지 생각했는데 시작단계가 너무 답답하네요. 제가 잘몰라서 그런거겠지만... 답변 감사합니다. |
경미임
/
2020/03/14 01:18:57 /
추천
0
원인에 대한 자답 - 5.7에서는 경고처리를 하고 오류가 나지 않았을뿐이었고 완전한 허용을 하는것은 아니엇다고 합니다. 8넘어와서는 경고가 아니라 아예 오류처리를 하는 것으로 바뀌었습니다. 그래서 sql_mode에서 큰차이가 없음에도 서로 다른 결과가 나왔던 것이었습니다. 해결법은 sql_mode에서 NO_ZERO_IN_DATE, NO_ZERO_DATE 이 두옵션을 빼버리면 된다고 합니다. 추가합니다. 정확히는 NO_ZERO_DATE이 0000-00-00에 영향을 끼치고 NO_ZERO_IN_DATE은 2020-00-14이나 2020-03-00같이 월이나 일이 유효하지 않은 0일때 영향을 끼친다고 합니다. |
아래 내용처럼 했는데 mysql이 죽는다는건가요? (이것도 이상합니다. 단순히 set 명령어 실행하는건데..)
https://stackoverflow.com/questions/35565128/mysql-incorrect-datetime-value-0000-00-00-000000/35565866
mysql 버전이 올라가면서 이전에 000-00-00 로 사용하던 것이 바뀌었습니다.
sql-mode='' 이 아닙니다. 이 글 (https://stackoverflow.com/questions/3891896/blocking-0000-00-00-from-mysql-date-fields) 참고하세요
결론. mysql 문제.