質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.50%
MySQL

MySQL(マイエスキューエル)は、TCX DataKonsultAB社などが開発するRDBMS(リレーショナルデータベースの管理システム)です。世界で最も人気の高いシステムで、オープンソースで開発されています。MySQLデータベースサーバは、高速性と信頼性があり、Linux、UNIX、Windowsなどの複数のプラットフォームで動作することができます。

Q&A

解決済

1回答

1773閲覧

MySql lost conection

ikasoumen

総合スコア110

MySQL

MySQL(マイエスキューエル)は、TCX DataKonsultAB社などが開発するRDBMS(リレーショナルデータベースの管理システム)です。世界で最も人気の高いシステムで、オープンソースで開発されています。MySQLデータベースサーバは、高速性と信頼性があり、Linux、UNIX、Windowsなどの複数のプラットフォームで動作することができます。

0グッド

0クリップ

投稿2017/04/28 17:12

編集2017/04/28 17:21

###前提・実現したいこと
Access(ODBC) - MySQL 間で、
カーソルを利用したストアドプロシージャを実行したい

###発生している問題・エラーメッセージ
下記に記すストアドプロシージャ(一部のみ記載)をAccessのADODBを利用し呼び出したところ、
通信が切断されている現象が発生しています。

想定であれば、OUTパラメータであるRETURN_CODE = 0 が返ってくるはずが、
RETURN_CODEは毎回違う値が返ってきます。(プロシージャ内で設定していない数字など)

該当のストアドプロシージャを呼び出した後に、
SQLを発行すると、(SELECT 1 など)
Lost connection to MySQL server during query と通知されます。

RETURN_CODEをAccess側に返せていませんが、
プロシージャ自体は最後まで実行されているようで、
データの更新は確認しています。

Access側に例外は通知されていないため、VBAの処理は停止せず、
正常な値ではありませんが、RETURN_CODEを受け取れています。

###該当のソースコード(構文は参考としてください。)

DECLARE cur CURSOR FOR SELECT * FROM USERS; OPEN cur; CLOSE cur; SET RETURN_CODE = 0;

###試したこと
上記コードは、原因の解析のためソースをシェイプアップしていったものです。
その結果、カーソルのオープン・クローズの部分で問題が発生していると判明しました。
カーソル部分をコメントアウトすると、正しくRETURN_CODEを受け取ることができます。

AccessからMySQLのストアドプロシージャを呼び出す際に、
カーソルは使用できない、もしくは、カーソルを利用するのに条件が必要など、
制約はありますでしょうか?

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

自己解決

Adodb.CommnadのExecuteから、
Adodb.RecordsetのOpenにクエリとしてストアドをキックする文字列を渡したところ解決いたしました。

詳しい理由はわかりませんが、バグのようです。

参考

投稿2017/04/29 16:28

ikasoumen

総合スコア110

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.50%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問