0

libmysqlclient_r.so、つまりcmysqlコネクタを使用します。現在のアーチに従って、connection1のthread1で、準備されたstmtが作成され、キャッシュされます。次にthread2connection2の場合、キャッシュされた準備済みstmtが再利用されます。

実行後、プログラムはランダムな場所でセグメンテーション違反をスローします。

注:スレッドを1つだけ保持して実行すると、セグメンテーション違反が発生することはありません。

http://dev.mysql.com/doc/refman/4.1/en/threaded-clients.htmlに記載されているすべての必要な手順を実行しましたが、mysqlのドキュメントには何も見つかりませんでした。

スレッド間でpreparestmtsを共有することが問題であるかどうかを提案してください??

4

2 に答える 2

1

私の知る限り、準備されたステートメントは作成され、接続コンテキストに関連付けられます。プロトタイプ関数は入力パラメーターとして接続を必要とするため、connection_A のコンテキストで準備された準備済みステートメントを connection_B で再利用することはできません...

MYSQL_STMT *mysql_stmt_init(MYSQL *mysql)
于 2012-04-13T06:09:28.253 に答える