「MySQL」タグアーカイブ

【MySQLエラー】Warning: mysql_connect() [function.mysql-connect]: Too many connections in XXX on line XXX


MySQLでToo many connectionsというエラーが出た場合

mysql-error

MySQLからこんなエラーが出る場合があります。
そんな場合の対処方法を纏めておきます。

Warning: mysql_connect() [function.mysql-connect]: Too many connections in XXX on line XXX
I cannot connect to the database because: Too many connections

なお、ブラウザからアクセスして↑のエラーが出ている場合、phpMyAdminにアクセスをしようとしても↓の様なエラーが出てしまいます。

mysql-error-2

 

手っ取り早く解消する方法

レンタルサーバ(Lunarpages)の管理画面にログイン > メニュー > Configuration > Service

mysql-error-3

mysqldの行のStopをクリック してmysqlを一旦停止します。

そして、Startを実行します。つまり、mysqlのプロセスを強制再起動します。再起動すると強制的にmysqlに繋がりっぱなしになっているプロセスをぶった切ってリセットする事が出来ます。

なお、Serviceで表示されている文字列は「mysqld」と最後に「d」が付いています。これは、mysqlのデーモンです。デーモンとは、UNIX系OS(CentOSなど)のバックグラウンドプロセスの事を表しています。WindowsOSでは、サービスと呼ばれています。

根本的に問題を解決する場合

2点の解消を行います。

1点目:最大接続数を増やす

2点目:1回の接続時間を短くする

mysqlの設定を変更すれば、余程多量のアクセスが無い限りはこの様な問題が起こらなくなります。

SSHでサーバに接続します。今回はLunarpagesにTeraTermでSSH接続しました。Lunarpagesでレンタルサーバを借りると、サーバの中にMySQLもインストールされています。さくらインターネットなどでは、DBサーバが分かれていますが、LunarpagesのDedicate Serverでは一体になっていました。

SSHでサーバに繋がったら

mysql

と入力するとmysqlに繋がります。

max_connectionsの確認 →最大接続数の確認が出来ます。
show global variables like’max_connections’;

wait_timeoutの確認 →接続時間を確認できます。
show global variables like’wait_timeout’;

デフォルトでは、 28,800秒 = 480分  = 8時間・・・とても長い、長すぎます。ここでは、60秒に設定します。

それぞれの数字をメモっておきましょう。

Control + C でmysqlを抜けてサーバ接続状態にします。

mysql-checking-1

winSCPでサーバに接続し

/etc/my.cnf

をローカルのデスクトップにコピーします。

mysql-checking-2

こんな感じに設定しました。

# 接続数
max_connections = 1000

# 待機時間
wait_timeout = 60

編集したらサーバの/etc/my.cnfにアップロードします。

以下コマンドを発行し

sudo service mysqld restart

と出ればMySQLの再起動は完了です。

Stopping mysqld: [ OK ]
Starting mysqld: [ OK ]

MySQLのデーモンの再起動をしないと設定ファイルを変更しても反映されないので注意しましょう。

そして再び値をチェックします。

最大接続数:1,000

待機時間:60

にしっかり変更されました。

mysql-setting-finished

 

MySQLでエラーが頻発する場合には、この手順をすれば解決されます。

MySQLでステータス確認でたまに使うコマンドのメモ書き

MySQLで現在設定されている最大接続数を確認

show global variables like’max_connections’;

MySQLで現在の接続数を確認

show status like ‘Threads_connected’;

MySQLの累積のコネクション数を確認

show status like ‘Connections’;

 


MySQL Connectorのダウンロードとインストールまでのメモ書き


MySQL Connectorをインストールする方法

MySQL Connectorをダウンロードする為に
http://dev.mysql.com/downloads/connector/odbc/
基礎からのMySQL 改訂版 (基礎からシリーズ)
にアクセスします。

Select Platform: とあるのでその中から

Windows(X86,64-bit),MSI Installer
(mysql-connector-odbc-5.3.6-winx64.msi)
の行のDownloadをクリックします。

2016/11/3

時点で、ダウンロードしたMySQL Connectorのバージョンはこちらです。

mysql-connector-odbc-5.3.6-winx64.msi

mysql-connector
Windows (x86, 32-bit), MSI Installer  → 32bit版

Windows (x86, 64-bit), MSI Installer → 64bit 版

両方ダウンロードしてインストールしておきましょう。CSEなど昔のDB操作ツールでODBC接続したい場合には、32bit版でないとエラーが発生してしまいます。

 

インストーラー(msi)をキックするとインストールが開始します。

MySQL Connector/ODBC 5.3 – Setup Wizard
The Setup Wizard will install MySQL Connector/ODBC 5.3 release 5.3.6 on yourcomputer. To continue, click Next.
と出るので

Next > をクリック

License Agreement

画面が表示される。表示されたら

I accept the terms in the license agreement

にチェックを入れて

Next > をクリック

Typical  にチェックを入れる

Next > をクリックする。

Ready to Install the Program
The Wizard is ready to begin installation.

と出るので、 Install ボタンをクリックする。
詳細! PHP 7+MySQL 入門ノート

Installing MySQL Connector/ODBC 5.3
The program features you selected are beging installed.
Please wait while the Setup Wizard installs MySQL connector/ODBC 5.3.
This may take several minutes.
というメッセージが表示されます。

ざっくりとした意味は、インストールに数分かかる場合がありますという意味です。

この時にWindowsからセキュリティー対策として確認ダイアログが表示される場合があります。

このアプリがデバイスに変更を加える事を許可しますか?
mysql-connector-odbc-5.3.6-winx64.msi
確認済みの発行元: Oracle America, Inc.

と出たら「はい」をクリックします。

するとインストールが進んで Wizard CompletedになればOKです。

mysql-connector-5-3-6-finished
Finishをクリックします。これで MySQL Connectorのインストールは完了です。
エキスパートのためのMySQL[運用+管理]トラブルシューティングガイド


HeidiSQLでSQL文を一発で整形する方法


HeidiSQLの整形機能は微妙

HeidiSQLでSQL整形を行う場合

メニュー > 編集 > SQLの整形(S)

をクリックします。一応整形されますが、正直整形の精度は微妙です。

フリーソフトのCSEの整形機能はしっかりしていたので、基本的なデータベース操作はHeidiSQLを使って、SQLの整形にはCSEを使うといった具合に使い分けると良いでしょう。

heidisql-15

また、ショートカットコマンドもあります。

 

Control + F8

キーです。覚えておくと便利です。

 


datetime型の列をグループ化して年月ごとにレコード数を取得する。


access_logsテーブルの中にaccess_date列があったと過程します。

そしてデータが↓の様に入っている事を想定します。

 

2015-03-02 17:35:25

2015-03-03 17:35:25

2015-04-03 17:35:25

 

この際に年・月ごとの数をgroup化することにより求めるSQLは次の様に記述します。

SELECT YEAR( access_date ) , MONTH( access_date ) , DAY( access_date ) , COUNT( * ) AS COUNT_DAILY
FROM access_logs
GROUP BY YEAR( access_date ) , MONTH( access_date ) , DAY( access_date )
ORDER BY YEAR( access_date ) ASC , MONTH( access_date ) ASC , DAY( access_date ) ASC


MySQLで作成済のビューのSQLコードを確認するには?


phpMyAdmin上で作成済のビューを確認する方法を纏めます。

 

1.データベースを選択する。

2.SQLタブをクリックする。

3.コマンドを発行しデータベースに作成されているテーブル一覧を表示する。

SHOW TABLES

4.ビューの名前が確認出来たら、そのビューを作成する為に必要なSQL分を以下コードを実行し確認する。

show create view `{ビュー名}`

※ビュー名は、バックスラッシュ「`」で囲まなくてはなりません。バックスラッシュの入力は、 Shift + @  を押します。

 

5.実行するとビューを作る為のSQLが一部分だけ表示されます。ただし、この状態だとSQLの全体を確認する事が出来ません。そこで

印刷用画面(全テキストを含む)をクリックします。

クリックすると SQL の結果 という画面が開いてその中にビューを作成する為のSQL分が全て表示された状態になります。

show-create-view


MySQLで使える基本的でかつ重要な命令文


MySQLで使える基本的でかつ重要な命令文

MySQLで使う頻度の高い、重要な構文などを不定期にメモ書きしていきます。毎度×2似たクエリを手書きで発行するのは効率が悪いので出来る限りコピペですぐ発行できる状態でまとめていきます。

【LIMIT】データの取得件数を制限する

SELECT * FROM HOGE_TABLE LIMIT S1 , S2

S1→取得開始位置。0から始まります。
S2→データ取得件数

例)
SELECT * FROM HOGE_TABLE LIMIT 0 , 10

この場合、
HOGE_TABLE から 0番目から10行のデータが取得されます。
インデックスとしては、 0~9になります。

 

要素の値がNULLであるかどうかを判定する

カラムの値がNULLのデータを抽出する場合
HOGE_NAME is NULL

と指定します。また、NULLではないデータを抽出する場合

HOGE_NAME is not NULL

とします。C# や php などに慣れていると

HOGE_NAME = null と誤って記述してしまいますが、、、これでは対象データを抽出する事が出来ないので注意しましょう。


MySQL mysql-5.5.39-winx64.msi をインストールする


関連したメモ

mysql-5.5.39-winx64.msi を事前にダウンロードします。

5.6をWindows 7 にインストールしようとしてもうまくいきません。

安定板の5.5.39をインストールする事を強くおススメします。

参考にしたサイト

インストールを行うと次の画面が表示されます。

mysql_7

 

Next > をクリックします。

次の画面でも再び Next > をクリックすると次の画面が表示されます。

Completed the MySQL Server 5.5 Setup Wizard

Launch the MySQL Instance Configuration Wizard にチェックが入っている事を確認し、 Finish をクリックします。

mysql_8

すると

Welcome to the MySQL Server Instance Configuration Wizard 1.0.17.0 という画面が起動するので Next > をクリックします。

mysql_9

 

 

MySQL Server Instance Configuration 画面が起動したら

Detailed Configuration にチェックが入っている事を確認し Next > をクリックします。

mysql_10

 

 

そこそこのアクセスを想定したWEBアプリの開発を行うのであれば Server Machineを選択し Next > をクリックします。

開発用でかつアクセス数が少ない場合には、 Developer Machine を選択します。

mysql_11

 

 

Multifunction Database にチェックを入れてNext > をクリックします。

mysql_12

MySQLのインストール先を選択します。通常はデフォルトのままで良いです。 Next > をクリックします。

mysql_13

 

 

 

 

同時接続数の想定値が20人位の場合には、

Decision Support(DSS)/OLAP を選択し Next > をクリックします。

mysql_14

 

リモート接続する必要がある場合は、Enable TCP/IP Networkingにチェックを入れます。また、ローカルで運用する場合にはチェックをはずします。リモート接続する場合は、ファイアウォールを開放してやる必要があるのでAdd firewall exception for this portにチェックをします。選択が終了したら、「Next」ボタンをクリックします。

mysql_15

 

MySQLの文字コード設定画面です。

Configure the MySQL Server 5.5 server instacne.

Best Support For Multilingualism

Make UTF8 the default character set.This is the recommended character set for storing text in many different languages.

を選択します。

mysql_20

 

Windows サービスとしてインストールするかと MYSQL の Bin ディレクトリをWindows PATH に含めるかどうかの選択画面です。両方にチェックをしてNext >をクリックします。

mysql_17

 

rootパスワードを入力します。

MySQLの場合、管理者のIDはroot です。別のマシンからコントロールしたい場合は、Enable root access from remote machinesにチェックをしてそうでない場合にはチェックをはずします。

チェックをしない事をおススメします。インストールで失敗する可能性があります。

最後にNext > をクリックします。
注意:以前のバージョンで は、Enable root access from remote machinesにチェックをするとインストールの最後で Error Nr. 1364 Field ‘authentication-string’ doesn’t have a default valueというエラーが発生するバグがありましたが、最近のバージョンでは解消されています。

mysql_18

 

ここまでの作業で MySQL の設定項目の入力が完了し設定の準備ができたという画面が表示されます。最後にExecuteボタンをクリックします。

mysql_19

 

これを実行した時にフリーズしてしまう事があります。原因は不明です。

Processing configuration ...    (応答なし)


Windows7にMySQLをインストールする②


前のページからの続きです。

関連したメモ

ダウンロードした

mysql-5.6.20-winx64.msi

をキックしてインストールを開始します。

開いているファイル-セキュリティの警告

ダイアログが起動しますが実行(R)をクリックします。

Welcom to the MySQL Server 5.6 Setup Wizard 

が出たら Next をクリックする。

mysql_1

 

End-User License Agreement

I accept the terms in the License Agreement

にチェックを入れて Nextをクリックします。

mysql_2

Choose Setup Type

Typicla を選択します。本画面についてはNextは押さなくてもTypicalを選択すると次画面に自動で遷移します。

mysql_3 

Ready to install MySQL Server 5.6

ここまでの操作でMySQLのインストール順位が出来たのでInstall をクリックします。するとインストールが始まります。

mysql_4