포럼
MS-SQL 사용시 XE의 버그.
2015.04.09 11:40
안녕하세요?
현재 최신버전 1.7.x를 사용하고 있습니다.
혹시나해서 1.8.0 에서도 해봤습니다..
그런데 아직 이 문제는 해결이 된 것 같지 않아서 이곳에 혹시나 같은 경험을 하고 해결하신 분이 계신지 해서 올려봅니다.
저는 IIS와 MS-SQL 상에서 FastCGI를 이용해서 XE를 설치 했습니다.
제일 먼저 MS-SQL을 이용해서 엑스프레스엔진을 설치했고, 별 문제는 없었으나 사이트 메뉴 편집에서 디자인 설정을 하려고 하면 미리보기도 나오지 않고 설정이 되지 않습니다..
혹시나해서 MySQL을 설치해서 다시 설치를 해보았더니 정상적으로 작동을 합니다.
서버의 문제인가 싶어서 다른 서버에서도 해봤더니 똑같은 결과가 나와서 엑스프레스 엔진의 버그인것 같아서 질문을 하게 되었습니다.
나름 페이지구조를 보고 페이지 소스를 확인을 해보니, 아래 부분에 의심스러운 부분이 보이더군요.
module_name과 target_mid 등 파라메터 값이 모두 undefined로 나옵니다...
<form action="./?act=dispLayoutPreviewWithModule&module_name=undefined&target_mid=undefined&layout_srl=undefined&skin=&skin_type=P" target="xe_preview" class="_preview_form" method="post"><input type="hidden" name="error_return_url" value="/index.php?module=admin&act=dispMenuAdminSiteMap">
이걸 MySQL쪽으로 돌려서 해보면 저 부분에 값이 제대로 들어가있더군요..
일단 이 부분은 XE의 버그인것 같아서 이 곳에도 올립니다.
감사합니다.
댓글 11
-
기진곰
2015.04.09 12:46
-
미드미ff892
2015.04.09 23:26
MS-SQL버전은 2008 버전입니다. IIS는 윈도우 2008R2 에 들어있는 7.5 버전입니다.
PHP버전은 5.4.24 로 나오네요. 윈도우 웹 플랫폼 설치 관리자를 이용해 설치 한 것입니다.
-
prologos
2015.04.10 16:35
사양이 저와 비슷하네요. SQL이나 윈도, IIS버전은 동일하고 저는 PHP수동으로 설치했습니다. PHP 5.5.8, XE 1.7.5.7 테스트하고 있었는데 그쪽 문제는 기억에 없네요.
혹시 어느곳에서 에러가 발생하는지 자세하게 설명해 주시면 저도 테스트 해보겠습니다.
-
미드미ff892
2015.04.10 22:50
안녕하세요? 위에서 말씀드렸다시피 사이트 메뉴 편집에서 디자인 설정을 하려고 하면 미리보기도 나오지 않고 설정이 되지 않습니다..
PHP버전의 문제라면 MySQL 로 했을 경우에도 같은 문제가 생겼어야 할듯 한데, MySQL에서는 정상 작동을 합니다.
혹시 가능하시다면 원격으로도 보여드릴 수 있습니다 ^^
감사합니다.
-
미드미ff892
2015.04.11 21:47
위의 동영상으로는 잘 모르실 수도 있을 것 같아서 설명과 함께 유튜브에 올렸습니다.
혹시 확인이 가능하시면 부탁드리겠습니다.
https://youtu.be/sCAvSwUszX0
-
prologos
2015.04.13 02:19
동영상 보니 제가 사용한적이 없는 메뉴였더군요. 저역시 동일한 증상이 발생하는걸 확인하고 좀 살펴봤습니다.
해당 메뉴를 표시하는 스킨파일
./modules/menu/tpl/sitemap.html 내용중 아래의 자바 스크립트 실행시 리턴값을 받지 못하는 것으로 판단 됩니다. 그러니 undefined로 표시 되는것이구요.
$.exec_json("module.getModuleInfoByMenuItemSrl", params, function(htData){ });
그래서 해당 쿼리 파일을 살펴보면...
./modules/module/queries/getModuleInfoByMenuItemSrl.xml
where절에서 서브쿼리를 사용해서 모듈 정보를 얻어오는거 같은데 이것이 mssql에서는 어떤 이유에서인지 작동이 안되는거 같습니다.
xml 쿼리 내용을 풀어보면 대략 아래의 형태라고 짐작 됩니다.
select *
from xe_modules
where mid =
(select url from xe_menu_item where menu_item_srl = menu_item_srl(변수))그래서 해당 쿼리를 join형태로 변경해봤더니 mssql에서도 정상 작동 하는것을 확인 했습니다.
적용한 쿼리는 아래의 형태 입니다.
select modules.*
from xe_modules as modules
left join xe_menu_item as menu_item on modules.mid=menu_item.url
where menu_item.menu_item_srl=menu_item_srl(변수)위 쿼리를 xml 쿼리 형식으로 변환하면 아래와 같습니다.
<query id="getModuleInfoByMenuItemSrl" action="select">
<tables>
<table name="modules" alias="modules" />
<table name="menu_item" alias="menu_item" type="left join">
<conditions>
<condition operation="equal" column="modules.mid" default="menu_item.url" />
</conditions>
</table>
</tables>
<columns>
<column name="modules.*" />
</columns>
<conditions>
<condition operation="equal" column="menu_item.menu_item_srl" var="menu_item_srl" notnull="notnull" />
</conditions>
</query>./modules/module/queries/getModuleInfoByMenuItemSrl.xml 파일 내용을 위처럼 변경하고 테스트해보세요. 저는 mysql은 설치하지 않아서 mysql에서의 작동은 확인하지 못했습니다 ㅡ,.ㅡ
-
미드미ff892
2015.04.13 09:17
우와.. 잘 되네요! 정말 명쾌하고 훌륭한 답변 감사드립니다.
XE의 버그라고 볼 수 있겠네요. 다음버전에서는 수정되서 나왔으면 좋겠네요 ^^
감사합니다!
-
prologos
2015.04.13 15:51
해결 되셨다니 다행이네요 ^^;
그런데 혹시 mysql에서 아래의 쿼리 구문 실행하면 결과가 어떤 식으로 나오는지 알려주실 수 있나요? (설치하기 귀찮아서 도리어 질문 합니다 ㅠㅠ)
> SELECT *, count(module_srl) as instanceCount FROM xe_modules as modules WHERE site_srl = 0 GROUP BY module
제기하신 문제 살펴보다보니 위와같은 쿼리도 있어서요... 물론 mssql에서는 오류나는 문법 입니다 ㅎ
-
미드미ff892
2015.04.15 15:52
안녕하세요? 글을 이제 보았습니다. ^^;;;
말씀하신 쿼리는 MySQL에서 문제없이 잘 실행 됩니다.
-
prologos
2015.04.15 17:25
확인 감사합니다.
사실 댓글을 늦게 확인하시는거 같아서 어떤 식으로 결과가 나오는지 직접 확인 했습니다 ^^;;
-
미드미ff892
2015.04.15 18:31
아흑 죄송합니다.. 도움이 못 되어드렸네요..ㅜㅜ
사용중이신 IIS 버전, MS-SQL 버전, PHP 버전을 알려주시면 테스트하시는 분들에게 도움이 되겠습니다. (MySQL은 최소 버전이 정해져 있지만, 다른 DBMS들은 그런 제한이 없으니 애매하더군요.)