포럼
현재 소셜XE는 mysqli DB환경을 사용할 시 문제가 있습니다.
2014.05.10 10:29
간단히 요약하여 말씀드리면 댓글 목록을 받아올 때 문제가 있습니다.
socialxe/queries/getComment.* 쿼리문들을 Mysqli에서 사용할 시
모든 값을 NULL로 받아오는 현상이 있습니다. XML쿼리가 여러 DB 환경을 지원하려 지원하고 있는 걸로 아는데
GitHub에 이슈 등록을 하니 문제 없음요^^ 이런 식으로 클로즈하고 넘어가 버리더군요.
물론 Mysql로 변경해서 사용하면 됩니다만, 또 어떤 위젯 및 모듈은 Mysqli에서만 에러 없이 출력해주는 쿼리가 있는 바람에
그냥 쉽게 변경해서 사용할 수 있는 상황이 아닌 것 같습니다.
제가 올린 XML쿼리 중에 Mysqli에서 사용할 수 없는 쿼리가 있는 건지
마땅히 DB타입에 따라 에러를 뿜고 있는데 개선 의지도 없는 것 같고 답답하기만 하네요.
XE마스터 세진님의 도움을 받아 수정한 쿼리 파일들 올립니다.
특정 환경에서 Mysqli를 사용 하실 때 소셜XE의 댓글 목록 불러 오기가 안될 시 아래 파일들
socialxe/queries/에 업로드하시면 됩니다.
댓글 13
-
XE힘들당휴
2014.05.10 10:34
-
銀童
2014.05.10 10:35
제가 아는 사이트에서는 mysqli 에서 문제가 없었습니다. 개인 서버 세팅의 문제가 아닐까 싶은데요.
정확한 디버깅은 해봐야알겠지만 문제 없음요^^ 라고 했을때는 정말 문제가 없어서 그랬던거 같네요.
-
XE힘들당휴
2014.05.10 10:36
저도 세 군데 호스팅에서 초기상태로 테스트 해봤는데
모두 문제가 있었습니다.
-
sejin7940
2014.05.10 10:50
두개의 테이블을 사용하는데, 같은 이름의 칼럼명이 있는데 그걸 한꺼번에 불러들여서 그런걸겁니다.
<column name="comments.*" />
<column name="socialxe.*" />의 칼럼이 겹치면, 결국 하나는 * 를 쓰지말고 칼럼명이 안 겹치게 alias 를 써가면서 재정의하거나
실제 함수에서 안 쓰면 겹치는 칼럼은 아예 안 불러내거나 해서 처리하면 될겁니다
socialxe.* 를 세분화시켜 각각 칼럼화 하면 제대로 작동될겁니다.
-
XE힘들당휴
2014.05.10 11:08
이렇게 하니 해결이 됩니다
확실히 mysql과 mysqli는 조금 차이가 있는 것 같습니다.
mysqli가 아무래도 조금 뭐랄까 기본 문법을 무시하고도 쿼리가
가능한대신 복잡하게 되면 에러 발생이 많달까..
그건 그렇고 이것 때문에 거의 3일 밤낮을 버렸는데
세진님 휴대폰 번호 메일로 주시면 커피라도 한잔 보내드리겠습니다
-
銀童
2014.05.10 11:44
어 alias 가 안되있는거였으면 안됐어야 했는데 왜 전 됐었죠 -_-; 이상하네..
-
sol
2014.05.10 11:50
MySQL이 좀;;; not null도 제대로 안되고 별도 옵션이 필요하고....
-
sejin7940
2014.05.10 11:53
alias 가 아니라.. 두개를 join 했을때 같은 이름의 칼럼이 생길 수 있으면 제대로 안 될거예요
예를들어, 지금 문제가 되는 query 파일에서
comment.comment_srl 도 있고, socialxe.comment_srl 의 동일한 이름의 칼럼이 있는데
query 문에서는 comment.* 와 socialxe.* 로 한꺼번에 전부 다 불러버리다보니.. 문제가 생긴거예요 ^^
(보통 join 한 쿼리를 보면, 하나의 테이블의 일부 칼럼만 쓰지 둘다 .* 로 안 부르다보니 보통 이런 문제가 안 생겼던거죠)
-
GG
2014.05.10 12:04
깃헙에서 문제없음요 하고 클로즈 한건 코어에 문제없음요 한것입니다.
소셜xe 의 문제를 코어에 올리지 말라는 뜻이지요 -
XE힘들당휴
2014.05.10 12:13
제가 애초에 그 글을 올린 건 소셜XE뿐만 아니라
XE에 임시로 db_type 스왑 기능이 있다면 좋지 않을까 하고 올린 것입니다.
아직 초보자라 mysql과 mysqli 쿼리 시 차이점을 판단할 수 없었고
이에 대해서 관련 자료도 별로 없습니다.
뭐 소셜XE에만 한하는 글로 오해하셨다면 드릴 말씀은 없네요
-
sol
2014.05.10 12:23
오해가 아니라
해당 문제를 코어에서 해결할 수 있는 방법은 없습니다.
MySQL이 다른 DB에 비해 조금 완만하게 sql parse하는 것입니다.
즉 잘못된 쿼리가 들어와도 어느정도 처리를 해줍니다. group by 문도 그렇고 not null 도 그렇고 상당히 많습니다.
결국엔 XE에서 해야할 것이 아닌 제대로 된 쿼리를 사용해야 하는 것이죠.
또한 임시로 db_type을 변경한다 하면,
connection 이 두배가 되어야 할텐데 이점도 딱히 없고 좋지 않은 방법입니다.
-
XE힘들당휴
2014.05.10 12:29
음 그렇군요. 감사합니다
그 완만함 이라는게 sqli에서 더 도드라지나 봅니다.
-
시기
2014.05.10 14:38
스케치북님이 mysqli 환경에서 안된다고 말씀하셨던걸 본적이 있었는데..
이렇게 원인분석으로 시작되서 댓글로 의견을 주고받고 해결책이 나오고..
그결과물을 올려주시기까지 하시니 뭔가.. 보기 좋네요 ㅋㅋ
물론 냉큼 다운받아 실험해보니 잘되서 더욱 기분이 좋네요!
헌데 아직은 mysql로 사용해야겠어요..
댓글 작성자의 트위터나 페북마크가 XE로 고정되어 버리고 링크도 안걸리더라구요~
글 내용 포지션이 여러분에게 알려야 하는 부분도 포함되어 있어 이쪽에 게시하였습니다
각종 게시판에서 이 문제를 겪고 계신분들은 files/config/db.config.php 파일 내에서
mysql로 변경하시면 됩니다