[前][次][番号順一覧][スレッド一覧]

mysql:12606

From: Keiji Nagasako <Keiji Nagasako <keiji0@xxxxxxxxxx>>
Date: Sat, 24 Dec 2005 10:42:59 +0900
Subject: [mysql 12606] C APIで'SELECT文'を含むストアドプロシージャのレコード獲得方法について

はじめまして、森と申します。

MySQL 5.0.17で'SELECT文'を含むストアドプロシージャを、
C APIでコールすると一回目は成功するのですが、2回目をコールすると
"2013: Lost connection to MySQL server during query"と、
エラーが起ります。

* プロシージャ

Delimiter ;;

CREATE PROCEDURE a ()
BEGIN
  SELECT 'abc';
END;;

* C source

#include <stdio.h>
#include <mysql.h>

int main ()
{
  MYSQL mysql;
  MYSQL_ROW row;
  MYSQL_RES *result;

  mysql_init(&mysql);
  mysql_real_connect(&mysql, "localhost", "root", NULL, "test", 0,
NULL, CLIENT_MULTI_STATEMENTS);

  if (mysql_query(&mysql, "CALL a()") ||
      !(result = mysql_store_result(&mysql))) {
    printf("Error 1: %d %s\n", mysql_errno(&mysql), mysql_error(&mysql));
    return 1;
  } else {
    while (row = mysql_fetch_row(result))
      puts(row[0]);
    mysql_free_result(result);
  }

  // ここでエラーが起る
  if (mysql_query(&mysql, "CALL a()") ||
      !(result = mysql_store_result(&mysql))) {
    printf("Error 2: %d %s\n", mysql_errno(&mysql), mysql_error(&mysql));
    return 1;
  } else {
    while (row = mysql_fetch_row(result))
      puts(row[0]);
    mysql_free_result(result);
  }

  mysql_close(&mysql);
  return 0;
}

コンパイル -> 実行 ->
abc
Error 2: 2013 Lost connection to MySQL server during query

はじめのクエリのレコードは獲得出来ているみたいですが。
2回目のクエリのエラーの原因はなんでしょうか?

コマンドラインのMySQLクライアントは何度発行しても問題ないので、
上記のソースがおかしいのでしょうか?
よろしくお願いします。

環境
os: Mac OS X 10.4.3
mysql: 5.0.17

[前][次][番号順一覧][スレッド一覧]

->   12606 2005-12-24 10:42 [Keiji Nagasako <keij] C APIで'SELECT文'を含むストアドプロシージャのレコード獲得方法について
     12607 2005-12-24 14:01 ┣[柳町 洋光 <hiromits] 新しいメールアドレスで、このMLに参加するには?
     12608 2005-12-24 16:12 ┃┗[とみたまさひろ <tomm]                                     
     12609 2005-12-25 18:17 ┗[Keiji Nagasako <keij]