node.jsアプリケーションにはnode_msyqlというMySQLデータベースにアクセスするための小さなライブラリがあります。node.js/node_mysql - 無効な接続で「データベースが選択されていません」というエラーが表示される
残念ながら、私たちの接続が多分8-10時間使用されない場合、次回にクエリを実行しようとすると、サーバから"No database selected"
エラーが返されます。どこかで"USE db"
を追加する必要がありますが、どこにあるのかわかりません。
接続が古くなり、node_mysqlが古い接続をリフレッシュしているように見えますが、正しいdbが接続されているかどうかを確認する方法がないようです。私は.connected()
コールバックまたはイベントか、正しいDBが常にUSE
のdであったことを確認できるものを探していましたが、これまでの運はありませんでした。
どのようにすればいいですか?
この回答は機能します。もう1つの答えは、問題を完全に回避し、クライアントオブジェクトにデータベースを設定するだけです。再接続すると、 'useDatabase'が実行されます。P – MarcWan
ドライバを変更してください:MySQLの認証ハンドシェイクでデータベースを組み込むことができます。他のドライバ(my-https://github.com/sidorares/nodejs-mysql-nativeを含む)は、ハンドシェイク中に存在する場合、データベースを使用します。現在、私のドライバは接続の切断に再接続しようとしませんが、実装しようとしています。 –
また、私の解決策に問題があることに注意してください:self._prequeue(connect);コマンドキューの先頭にauthコマンドを挿入し、キューの最後にクエリ( 'use db')を追加します。キューに登録されている他のコマンドは失敗することがあります。 –