2012-04-13 2 views
0

libmysqlclient_r.so를 사용합니다 (예 : c mysql connector). 현재 아치 당 으로, connection1 준비된 스레드에 대한 스레드 1이 작성되고 캐시됩니다. 다음 스레드 2 연결 2 캐시 된 준비된 stmt가 다시 사용됩니다.준비된 문이 스레드간에 공유 될 수 있습니까?

실행 후 임의의 위치에서 세그먼트 화 오류가 발생합니다.

참고 : 스레드를 하나만 유지하고 실행하면 세그먼트 화 오류가 발생하지 않습니다. 아래에 주어진

내가 필요한 모든 단계를 수행하더라도, 그것에 대해 MySQL의 문서에서 아무것도 발견하지 않았다 : http://dev.mysql.com/doc/refman/4.1/en/threaded-clients.html

스레드에서 준비 stmts의 공유가 문제가있는 경우 제안하세요?

+0

"제안하십시오 ... 프로토 타입 기능은 입력 매개 변수로 연결이 필요합니다, 그래서 당신은 connection_B에서 connection_A의 맥락에서 제조 된 준비된 명령문을 다시 사용할 수 없습니다? ? " - 아뇨. 코드 좀 더 넣어 주시겠습니까? 코드를 게시하기 전에 – user928204

+0

을 보내 주시면 답변에 대한 설명을 '아니오'로 제공해주십시오. 위의 시나리오를 고려하십시오 - 가능하다고 생각하십니까? – user1145280

답변

1

AFAIK, 준비된 문은 연결 컨텍스트로 작성/연결됩니다. 스레드가 문제를 통해 공유가 stmts를 준비하는 경우

MYSQL_STMT *mysql_stmt_init(MYSQL *mysql) 
+0

답장을 보내 주셔서 감사합니다.이 시나리오에서 사용할 수있는 공식 문서가 있습니까? – user1145280

+1

@ user1145280 : 함수 프로토 타입만으로도이 사실을 알 수 있습니다. 다른 데이터베이스도 같은 방식으로 작동합니다. 최종 가이드는 MySQL 클라이언트 API 문서입니다. – Malkocoglu

+0

더 흥미로운 질문은 '스레드간에 연결 컨텍스트를 사용할 수 있습니까?'라는 대답이 '예, 한 번에 하나의 스레드 만 사용할 수 있습니다'입니다. –

관련 문제