「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’;

 


HeidiSQL(ヘイディエスキューエル)をインストールした時のメモ


HeidiSQLをインストールした時のメモ

これまでDB管理ツールとしてフリーソフトのCSEなどを使っていましたが、久々にDB管理ツールを調べてみるとSQL Workbenchやらいろいろとありました。今回は、HidiSQLのインストールと基本設定までをメモっておきます。

HeidiSQLの読み方は、「ヘイディエスキューエル」です。外人が作ったソフトなので正しい読み方はわかりませんが、これで良いでしょう。
まず、公式サイトにアクセスします。

http://www.heidisql.com/download.php
スッキリわかる SQL 入門

サイトにアクセスしたら
HeidiSQL 9.4 Installer
というリンクがあるのでクリックします。

ダウンロードが開始されます。ダウンロードが完了すると

HeidiSQL_9.4.0.5125_Setup.exe

というファイルが出て来ます。2016/11/04時点の最新のHeidiSQLのモジュールです。

ダウンロードが完了したらキックしてインストールを開始します。

この時に

ユーザアカウント制御

このアプリがデバイスに変更を加えることを許可しますか?

HeidiSQL Setup

確認済の発行元: Open Source Developer, Ansgar Becker 

ファイルの入手先:このコンピュータ上のハードドライブ

とポップアップで表示されたらはいをクリックします。
実践ハイパフォーマンスMySQL 第3版

heidisql-1

 

クリックすると日本語で

HeidiSQL セットアップウィザードの開始

このプログラムはご使用のコンピュータへHeidiSQL をインストールします。続行する前に他のアプリケーションをすべて終了してください。

続行するには「次へ」、セットアップを終了するには「キャンセル」をクリックしてください。

と出るので次へ(N) >をクリックします。

使用許諾契約書の同意

同意する(A)にチェックを入れて次へ(N)>をクリックします。
MySQL 即効クエリチューニング(Think IT Books)

すると

インストール先の指定

HeidiSQL のインストール先を指定してください。

と出ますが、そのまま次へ(N) >をクリックします。

プログラムグループの指定

プログラムアイコンを作成する場所を指定してください。

と出ますが、そのまま次へ(N)をクリックします。

heidisql-2

追加タスクの選択と出ますが

Option項目は無駄なのでチェックを外しておきました。別にチェックを入れたままでも構わないです。

ただ、HeidiSQLに実行クエリやらデータやらを抜き取られるのでは?と心配だったのでチェックを私は外しました。まぁ、オープンソースプロジェクトなのでそこまで悪さをするやつはいないでしょうし、心配なら使うな!と言われればそれまでですが。最新バージョンのHiediSQLのバージョン確認もされるらしくそれもウザいので外しました。

インストール準備完了

と出たらインストール(I)をクリックします。heidisql-3

HeidiSQL セットアップウィザードの完了と出ればインストールは完了です。お疲れ様でした。。。


WordPressで設定したデータベースのパスワードを確認する方法


WordPressに設定したデータベースのパスワード確認は意外と簡単

さくらインターネットにWordPressをクイックインストールしたのですが、その時に設定したDBのパスワードが分からなくなってしまいました。

さくらインターネットのサーバーコントロール画面に入ってもDB名、DBユーザ名までは見えますが、設定したパスワードはマスクがかかっていて見えません。

db-name

いやーまいったなーと思っていて調べてみたところWordPressのインストール時に設定したDBパスワードを確認する方法が見つかったのでメモっておこうと思います。

DBパスワードの確認方法

WordPressをインストールしたディレクトリに

wp-config.php

というファイルがあります。このファイルを開きます。WinSCPで開こうとすると文字化けしてしまう場合には、ローカルに一旦ダウンロードしてさくらエディタなどで開きましょう。

すると29・30行目あたりに

/** MySQL データベースのパスワード */
define(‘DB_PASSWORD’, ‘XXX‘);

この様な定義があります。XXXがDBに設定したパスワードになります。

 

あとで分からなくならない様にしっかり台帳などにメモっておきましょう!

 

 


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[運用+管理]トラブルシューティングガイド


MySQLを使ったサービス(WordPress/Drupal)にアクセスできなくなった場合


MySQLを使ってDrupalやWordPressを使っているとアクセス数が急増した場合などに、次の様なエラーが出る場合があります。

同時接続数があまりにも大きくなりすぎた場合などに起こります。

そうなった場合には、専用サーバ(Dedicated Server)にログインしMySQLサービスを再起動してみましょう。私の環境ではそれで直りました。

 

Site off-line
The site is currently not available due to technical problems. Please try again later. Thank you for your understanding.

If you are the maintainer of this site, please check your database settings in the settings.php file and ensure that your hosting provider’s database server is running. For more help, see the handbook, or contact your hosting provider.

The mysqli error was: Too many connections.

 

 

mysql_error_drupal


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 と誤って記述してしまいますが、、、これでは対象データを抽出する事が出来ないので注意しましょう。


cakePHPの基本設定


cakePHPの特にバージョン2以降について、必ず設定が必要な項目等に絞ってメモ書きをしています。本サイトの記事をご覧になり試した結果引き起こされた不具合には一切責任は負いませんので、全てご自身の責任においてお試しください。ノウハウツリー管理人の完全なるメモサイトである事を十分ご理解ください。

 

apps/Config/routes.php

最初にサイトにアクセスが来た場合にどのコントローラ、ファンクションに誘導させるかの設定が出来ます。

29行目あたりに

Router::connect(‘/’, array(‘controller’ => ‘Takepons’, ‘action’ => ‘index’));

この様に記述すると http://test.com/ でアクセスされると最初に

apps/Controller/TakePonsControllerの中のindexファンクションが呼び出されるという設定になります。

 

apps/Config/database.php

 

アプリケーションが使用するデータベースの設定を行います。使用するレンタルサーバのDB設定に合わせましょう。

public $default = array(
‘datasource’ => ‘Database/Mysql’,
‘persistent’ => false,
‘host’ => ‘XXX’,
‘login’ => ‘XXX’,
‘password’ => ‘XXX’,
‘database’ => ‘test-db’,
‘prefix’ => ”,
‘encoding’ => ‘utf8’,
);

 

apps/Config/bootstrap.php

bootstrap.phpの28行目あたりに

Configure::load(“hogehoge”);

と記述すると、apps/Config/hogehoge.php の中で定義した定数を読み込む事が出来ます。

 

cakePHPのバージョンを確認する。

Configure::version();

 

デバッグ情報の出力の有無を設定する。

本番環境ではセキュリティ維持の為にもデバッグ情報は一切出さない様に 0 を設定しましょう。

Config/core.php

エラーメッセージを一切出さない。
Configure::write(‘debug’, 0);

エラーメッセージを表示するがSQL文は出力しない。
Configure::write(‘debug’, 1);

フルでデバッグメッセージを表示してSQL文も出力する。
Configure::write(‘debug’, 2);

利用中のcakeのバージョンを表示する。
echo Configure::version();