database.sarang.net
UserID
Passwd
Database
DBMS
ㆍMySQL
PostgreSQL
Firebird
Oracle
Informix
Sybase
MS-SQL
DB2
Cache
CUBRID
LDAP
ALTIBASE
Tibero
DB 문서들
스터디
Community
공지사항
자유게시판
구인|구직
DSN 갤러리
도움주신분들
Admin
운영게시판
최근게시물
MySQL Q&A 30355 게시물 읽기
No. 30355
여러개의 update문을 이어서 execute 시 문제..
작성자
찬(redstorm)
작성일
2012-11-13 11:48:17
조회수
4,642

 mysql과 c++를 연동하여 프로젝트중입니다.

어플리케이션에서 업데이트 쿼리를 여러개 날릴 때 문제가 있는데요
 
pQuery->m_pNorStmt->execute( strQuery );
여기에서 strQuery의 형태는
update t_test set test1=1, test2=2, test3=3;update t_test set test4=1, test5=2, test6=3;
update t_test set test7=1, test8=2, test9=3;...의 형태로 update 문이 여러개 이어져있습니다.
 
이렇게 실행을 하면 정상작동을 하고. 그 후 다시 execute함수를 호출하는 등 다른 쿼리를 하게 되면
 
commands out of sync; you can't run this command now

라는 에러 메세지를 뱉고 실행이 안됩니다.
명령어 싱크(순서)가 안맞다는 말은 알겠지만 정확히 어떻게 처리를 해줘야되는지 모르겠습니다.
 
update;update;update; 와 같이 여러개의 쿼리를 붙여서. execute() 를 호출할 경우에
별도의 처리 과정이 필요한것인지. 그게 무엇인지 궁급합니다.
 
많은 조언 바랍니다.
이 글에 대한 댓글이 총 6건 있습니다.

여러 쿼리를 ; 로 붙여 실행하기 위해서는 접속 시에 별도의 옵션이 필요합니다.

 

MySQL Connector/C API 에서는 CLIENT_MULTI_STATEMENTS,

MySQL++는 mysqlpp::MultiStatementsOption 을 사용하세요.

 

예)

Connection con;

con.set_option(new MultiStatementsOption(true));

 

박현우(lqez)님이 2012-11-13 14:15:20에 작성한 댓글입니다.

 아. 우선 감사드립니다.

그런데 제가 지금 MySQL Connector C++ 1.0.5 버전을 쓰고 있는데요.

여기서는 해당 함수가 setClientOption()같은데 파라미터로 뭘 넘겨줘야되는지요..

const string 타입으로 옵션을 넘겨줘야되는듯 한데..

말씀하신 CLIENT_MULTI_STATEMENTS 나MultiStatementsOption 을 찾지 못하는것 같아요

인터넷 뒤져봐도 안나오는듯 하네요ㅠ

찬님이 2012-11-13 14:48:58에 작성한 댓글입니다.
이 댓글은 2012-11-13 15:05:33에 마지막으로 수정되었습니다. Edit

저도 직접 해보지 않아 뭐라 답은 못 드리겠지만, MySQL 옵션에 있는 multi-statements 를 써보시는 건 어떨까요? 이것도 안되면 도저히 모르겠습니다만...

박현우(lqez)님이 2012-11-13 19:21:14에 작성한 댓글입니다.

우선 답변 감사드립니다.

저도 MySQL 옵션에 혹시 그런게 있나. 찾아보긴 했는데

ini 파일을 수정하는건지. 그렇다면 어떻게 세팅 하는건지를 또 찾기가 힘들더군요.

충분히 있을법도 한 경운데. MySQL Connector 를 사람들이 잘 쓰지 않는건지..

멀티문을 날릴 경우가 없는건지.. 정보가 너무 없더군요

혹시 MySQL 에서 multi-statements 옵션 설정법을 구체적으로 말씀해 주실 수 있나요? 

부탁 드리겠습니다.

찬님이 2012-11-13 21:59:40에 작성한 댓글입니다. Edit
조래혁(jjorae)님이 2012-11-16 10:20:29에 작성한 댓글입니다.

 이미 정상 작동을 한 후에, 위의 에러메세지가 발생했다면 조래혁님의 말씀이 맞는 것 같습니다.

박현우(lqez)님이 2012-11-16 10:27:30에 작성한 댓글입니다.
[Top]
No.
제목
작성자
작성일
조회
30362MySQL을대체교체할수있는,오픈소스MariaDB(http://mariadb.org)
마리아DB
2012-11-16
3592
30357DB2의 데이터를 Mysql에서 사용하고 싶습니다. [1]
최강산
2012-11-15
3075
303561개필드에 값을 배열로 담는 방법 질문 [2]
고형윤
2012-11-14
3354
30355여러개의 update문을 이어서 execute 시 문제.. [6]
2012-11-13
4642
30354index 생성시 뻣어버려요. 뭐가 문제일까요 [2]
채진선
2012-11-09
3148
30353디비이전 작업 하실분
레이홍
2012-11-09
2906
30352DB에 직원이란 단어가 & #51649;& #50896;와 같이 입력된다면 어떤 문제가 있는 것일까요?? [1]
김종수
2012-11-08
3058
Valid XHTML 1.0!
All about the DATABASE... Copyleft 1999-2017 DSN, All rights reserved.
작업시간: 0.068초, 이곳 서비스는
	PostgreSQL v9.6.3으로 자료를 관리합니다