おふとんの中から寝言をつぶやく

ビットコインなどの暗号(仮想)通貨関連の話題を中心に雑多に書きます。

Lost connection to MySQL server during query

mysql(mysql Ver 14.14 Distrib 5.7.29, for Linux (x86_64) using EditLine wrapper)を使ったアプリケーションを書いていて、

MySQL client is not connected

というエラーが出てきたので、コネクションが切れたときにエラーを検知してDBに再接続して手続きをretryしたものの今度は別のエラー、今回の本題の

Lost connection to MySQL server during query

がうまく解消できなくて、デバッグに時間がかかったので書き残しておきます。

 

原因は再接続後にprepare文を再発行せず、以前のDBインスタンスに紐付いたままのprepare文を実行していたせいでした。

 

例外処理でDBに再接続する際にprepare文の再発行もしたらこのエラーは解消されました。

 

 

 

Lost connection to MySQL server during query

mysqlを使ったアプリケーションを書いていて、

MySQL client is not connected

というエラーが出てきたので、コネクションが切れたときにエラーを検知して再接続して手続きをretryしたものの今度は別のエラー、今回の本題の

Lost connection to MySQL server during query

がうまく解消できなくて、デバッグに時間がかかったので書き残しておきます。

 

結論から行くと、再接続後に、prepare文を再実行せず、以前のDBインスタンスに紐付いたままになっていたのがこのエラーの原因でした。

再接続する際にprepare文も再実行したらこのエラーは解消されました。

 

ubuntu18.04でkvmを使って仮想マシンを起動する

Ubuntu 16.04 LTS で KVM を使った仮想サーバ

こちらを参考にして仮想サーバを作っていたが、18.04になってからいくつかコマンドが変更されていたので、18.04に対応させる方法を残しておく。

 

仮想サーバーの中の/etc/rc.local

#!/bin/bash
 
IP24=192.168.1
GW=.1
 
NIC=`ifconfig -a|awk '$1 ~ /^ens/ {print $1, $5}'`
HEX=`ifconfig -a|awk '$1 ~ /^ether/ {print $2}'`
HW=`echo $HEX | awk 'BEGIN{FS=":"}{print $6}'`
DEV=`echo $NIC |awk 'BEGIN{FS=":"}{print $1}'`
DEC=`echo "obase=10; ibase=16; ${HW^^}" | bc`
IP=$IP24.$DEC
 
echo "ip address:" $IP
echo "broadcast :" $IP24.255
echo "gateway   :" $IP24$GW
ifconfig $DEV $IP netmask 255.255.255.0 broadcast $IP24.255
route add default gw $IP24$GW
hostname bc4py$DEC
echo 127.0.0.1 localhost > /etc/hosts
echo $IP $(hostname) >> /etc/hosts
 
exit 0

 

 

赤文字が必須事項
ifconfigではmacアドレスが小文字で返ってくる。
bcは小文字をコマンドとして受け取るのでこのまま渡すとエラーになり変換してくれない。
大文字に変換するには、Xという変数に対して${X^^}と書く必要がある。(要bash4以上)