私的良スレ書庫
不明な単語は2ch用語を / 要望・削除依頼は掲示板へ。不適切な画像報告もこちらへどうぞ。 / 管理情報はtwitterでログインするとレス評価できます。 登録ユーザには一部の画像が表示されますので、問題のある画像や記述を含むレスに「禁」ボタンを押してください。
元スレMySQL 総合 Part15

みんなの評価 : ☆
レスフィルター : (試験中)
申し訳ありません。
適当なスレッドが無かったので、ここで質問させて下さい。
現在JSP+Servlet+MySQLでWebアプリケーションの作成を行っています。
数日前から突然MySQLへの接続が出来なくなってしまいました。
運用を開始してから数日間は普通にselect、insertなどを実行出来ていたのですが、突然MySQLへ繋がらなくなりました。
調査した結果、ServletのgetConnection()でエラーが出ていました。(getConnection()のあるDaoは運用開始時からいじっていません)
JDBCに原因があると思い、バージョンを変更しましたが、接続出来ません。
また、MySQLに問題あると思い、一度アンインストールし、入れなおしましたが、やはり接続出来ません。
いろいろ調べてみましたが、どうしても分かりません。
どなたか原因が分かる方がいたら是非教えてください。
◆エラーメッセージ
com.mysql.jdbc.exceptions.jdbc4.CommunicationsException: Communications link failure
Last packet sent to the server was 0 ms ago.
at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:39)
at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:27)
at java.lang.reflect.Constructor.newInstance(Constructor.java:513)
適当なスレッドが無かったので、ここで質問させて下さい。
現在JSP+Servlet+MySQLでWebアプリケーションの作成を行っています。
数日前から突然MySQLへの接続が出来なくなってしまいました。
運用を開始してから数日間は普通にselect、insertなどを実行出来ていたのですが、突然MySQLへ繋がらなくなりました。
調査した結果、ServletのgetConnection()でエラーが出ていました。(getConnection()のあるDaoは運用開始時からいじっていません)
JDBCに原因があると思い、バージョンを変更しましたが、接続出来ません。
また、MySQLに問題あると思い、一度アンインストールし、入れなおしましたが、やはり接続出来ません。
いろいろ調べてみましたが、どうしても分かりません。
どなたか原因が分かる方がいたら是非教えてください。
◆エラーメッセージ
com.mysql.jdbc.exceptions.jdbc4.CommunicationsException: Communications link failure
Last packet sent to the server was 0 ms ago.
at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:39)
at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:27)
at java.lang.reflect.Constructor.newInstance(Constructor.java:513)
コネクション使い切ってんじゃないの?
解決策はともかく、原因調べるためにアプリケーションサーバのほう再起動してみては
解決策はともかく、原因調べるためにアプリケーションサーバのほう再起動してみては
>>706
できましたーーー!ありがとうございます!
できましたーーー!ありがとうございます!
>>697
「PHP,」で検索すれば?
「PHP,」で検索すれば?
>>709
select tags from blog where tags regexp '(^|[^[:alnum:]])PHP([^[:alnum:]]|$)';
ただし、1000レコードを超えるテーブルとかだと重すぎて使い物にならないかもしれん。
select tags from blog where tags regexp '(^|[^[:alnum:]])PHP([^[:alnum:]]|$)';
ただし、1000レコードを超えるテーブルとかだと重すぎて使い物にならないかもしれん。
>>709
いろいろやってみる前に正規化について短めのドキュメントでも
読んでおいた方が良い。DB設計の根っ子の話だから。
基本的にこの手の問題は全文検索インデックスでも使わない限り
ちゃんと正規化しないと全行スキャンになってスピードが出ない。
10000件記事があったら毎度10000件検索するはめになる。
いろいろやってみる前に正規化について短めのドキュメントでも
読んでおいた方が良い。DB設計の根っ子の話だから。
基本的にこの手の問題は全文検索インデックスでも使わない限り
ちゃんと正規化しないと全行スキャンになってスピードが出ない。
10000件記事があったら毎度10000件検索するはめになる。
710だが、リファレンスよく読んだら regexp '[[:<:]]PHP[[:>:]]' で済むことに後から気づいた。
とはいえ、みんな言ってるようにDB設計上は邪道なのでsplitされたものを格納することを激しく推奨する。
特にタグ情報とかだと、いずれgroup byで集計したくなる場面が出てきたときに
今の設計のままだと後悔するぞ。
とはいえ、みんな言ってるようにDB設計上は邪道なのでsplitされたものを格納することを激しく推奨する。
特にタグ情報とかだと、いずれgroup byで集計したくなる場面が出てきたときに
今の設計のままだと後悔するぞ。
>>713
insert into hogetbl (no1, no2, no3) select 11, max(no2) + 1, 33 from hogetbl;
insert into hogetbl (no1, no2, no3) select 11, max(no2) + 1, 33 from hogetbl;
どなたか>>704をお願いします。
>>715
MySQL Administratorのテーブルエディタに、フィールドのコメント欄があった気がする。
MySQL Administratorのテーブルエディタに、フィールドのコメント欄があった気がする。
>>718
条件式の評価がコストの大きいものなら検討の価値はあるが、
flag=0程度ならそのままでいいと思う。
どうしても評価回数を減らしたいのなら
SELECT aaa, IF(flag_zero, bbb, 'b_off') as bbb, IF(flag_zero, ccc, 'c_off') as ccc FROM
(select aaa, bbb, ccc, flag=0 as flag_zero from ... ) as t;
という感じか。かえって遅くなりそうだな。
条件式の評価がコストの大きいものなら検討の価値はあるが、
flag=0程度ならそのままでいいと思う。
どうしても評価回数を減らしたいのなら
SELECT aaa, IF(flag_zero, bbb, 'b_off') as bbb, IF(flag_zero, ccc, 'c_off') as ccc FROM
(select aaa, bbb, ccc, flag=0 as flag_zero from ... ) as t;
という感じか。かえって遅くなりそうだな。
>>702
アプリケーションサーバーはもちろん、PCを再起動しても接続出来ません。
コネクションについても調べてみましたが、やはりコネクション自体はひとつしか使っていませんでした。
show processlistで確認。
>>703
>WebサーバからDBサーバへ、コンソール経由で同じ接続情報で試してみよう。
とはどういうことでしょうか?
現状ローカルPC内で開発しております。
違うプロジェクトを作成し、そこからアクセスしても繋がりません。
いろいろ調べてみると、どうやらclose()の仕方が悪かったのではと思います。
運用開始してしばらくは正常に接続できたので、その間にコネクション?が一杯になり
アクセス出来なくなったのではと勝手に思っておるのですが、このコネクション?の解放方法
が分かれば教えてください。
ただ、そうするとMySQLをアンインストールして入れ直したのにコネクションが解放されてない
ということで問題だと思うのですが・・・・ともかくいろいろ調査したのですが、原因がさっぱり
分かりません。どうかお助け下さい。
アプリケーションサーバーはもちろん、PCを再起動しても接続出来ません。
コネクションについても調べてみましたが、やはりコネクション自体はひとつしか使っていませんでした。
show processlistで確認。
>>703
>WebサーバからDBサーバへ、コンソール経由で同じ接続情報で試してみよう。
とはどういうことでしょうか?
現状ローカルPC内で開発しております。
違うプロジェクトを作成し、そこからアクセスしても繋がりません。
いろいろ調べてみると、どうやらclose()の仕方が悪かったのではと思います。
運用開始してしばらくは正常に接続できたので、その間にコネクション?が一杯になり
アクセス出来なくなったのではと勝手に思っておるのですが、このコネクション?の解放方法
が分かれば教えてください。
ただ、そうするとMySQLをアンインストールして入れ直したのにコネクションが解放されてない
ということで問題だと思うのですが・・・・ともかくいろいろ調査したのですが、原因がさっぱり
分かりません。どうかお助け下さい。
そのローカルで別の手段でMySQLにアクセスしてみるってことだよ。
最初の問題と後のでは理由が違う気がするが。
再インストールした時点で設定変わっちゃってないか?
もうちょっと環境を詳しく書いてくれないか、もしWindowsならFWとかも。
最初の問題と後のでは理由が違う気がするが。
再インストールした時点で設定変わっちゃってないか?
もうちょっと環境を詳しく書いてくれないか、もしWindowsならFWとかも。
>>722
>そのローカルで別の手段でMySQLにアクセスしてみるってことだよ。
コマンドプロンプト上からはアクセス出来ました。selectもinsertも問題なく実行出来ました。
だからJDBCに問題があると思ったのですが。
>もうちょっと環境を詳しく書いてくれないか、もしWindowsならFWとかも。
はい。
OS:Windows VISTA SP1
DB:MySQL 5.0.67
サーバー:Tomcat 5.5、6.0
JAVA:JDK 1.6
JDBC:5.1.7、5.0.8
など
ファイアウォールについてはOS、ウィルスソフトともオンになっています。
試しにどちもらオフで実行してみましたが、やはり接続出来ませんでした。
ここはDB、Tomcatとも新しく入れ直した方良いでしょうか?postgreSQLとか。
仮に新しく入れ直しても接続出来ない(getConnection()でエラーが出る)場合は、何が原因だと思いますか?
やはりJDBCですかね?
>そのローカルで別の手段でMySQLにアクセスしてみるってことだよ。
コマンドプロンプト上からはアクセス出来ました。selectもinsertも問題なく実行出来ました。
だからJDBCに問題があると思ったのですが。
>もうちょっと環境を詳しく書いてくれないか、もしWindowsならFWとかも。
はい。
OS:Windows VISTA SP1
DB:MySQL 5.0.67
サーバー:Tomcat 5.5、6.0
JAVA:JDK 1.6
JDBC:5.1.7、5.0.8
など
ファイアウォールについてはOS、ウィルスソフトともオンになっています。
試しにどちもらオフで実行してみましたが、やはり接続出来ませんでした。
ここはDB、Tomcatとも新しく入れ直した方良いでしょうか?postgreSQLとか。
仮に新しく入れ直しても接続出来ない(getConnection()でエラーが出る)場合は、何が原因だと思いますか?
やはりJDBCですかね?
>>724
え、そうなんですか?
自分は「スタート」-「すべてのプログラム」-「MySQL」-「MySQL Server 5.0」-「MySQL Command Line Client」
から実行した結果なんですが。
Java側は以下になっております。
conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/myhp", "root", "1028");
つまり上記の場合、コマンドプロンプトで
mysql -localhost:3306/myhp -u root -p 1028
という風に接続してみろってことですね。
わかりました。やってみます。
え、そうなんですか?
自分は「スタート」-「すべてのプログラム」-「MySQL」-「MySQL Server 5.0」-「MySQL Command Line Client」
から実行した結果なんですが。
Java側は以下になっております。
conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/myhp", "root", "1028");
つまり上記の場合、コマンドプロンプトで
mysql -localhost:3306/myhp -u root -p 1028
という風に接続してみろってことですね。
わかりました。やってみます。
>>724
実行してみました。
ただし、「mysql -localhost:3306/myhp -u root -p 1028」では出来なくて、
「mysql localhost:3306/myhp -u root -p 1028」としたら実行出来ました。
実行したらステータス?がズラッと出てきたんですが、これって接続出来てるのでしょうか?
Variables (--variable-name=value)
and boolean options {FALSE|TRUE} Value (after reading options)
--------------------------------- -----------------------------
auto-rehash TRUE
character-sets-dir (No default value)
default-character-set sjis
comments FALSE
compress FALSE
database (No default value)
delimiter ;
vertical FALSE
force FALSE
named-commands FALSE
local-infile FALSE
no-beep FALSE
host (No default value)
html FALSE
xml FALSE
line-numbers TRUE
unbuffered FALSE
column-names TRUE
sigint-ignore FALSE
port 3306
prompt mysql>
quick FALSE
raw FALSE
reconnect TRUE
shared-memory-base-name (No default value)
socket (No default value)
ssl FALSE
ssl-ca (No default value)
ssl-capath (No default value)
ssl-cert (No default value)
ssl-cipher (No default value)
ssl-key (No default value)
ssl-verify-server-cert FALSE
table FALSE
debug-info FALSE
user root
safe-updates FALSE
i-am-a-dummy FALSE
connect_timeout 0
max_allowed_packet 16777216
net_buffer_length 16384
select_limit 1000
max_join_size 1000000
secure-auth FALSE
show-warnings FALSE
実行してみました。
ただし、「mysql -localhost:3306/myhp -u root -p 1028」では出来なくて、
「mysql localhost:3306/myhp -u root -p 1028」としたら実行出来ました。
実行したらステータス?がズラッと出てきたんですが、これって接続出来てるのでしょうか?
Variables (--variable-name=value)
and boolean options {FALSE|TRUE} Value (after reading options)
--------------------------------- -----------------------------
auto-rehash TRUE
character-sets-dir (No default value)
default-character-set sjis
comments FALSE
compress FALSE
database (No default value)
delimiter ;
vertical FALSE
force FALSE
named-commands FALSE
local-infile FALSE
no-beep FALSE
host (No default value)
html FALSE
xml FALSE
line-numbers TRUE
unbuffered FALSE
column-names TRUE
sigint-ignore FALSE
port 3306
prompt mysql>
quick FALSE
raw FALSE
reconnect TRUE
shared-memory-base-name (No default value)
socket (No default value)
ssl FALSE
ssl-ca (No default value)
ssl-capath (No default value)
ssl-cert (No default value)
ssl-cipher (No default value)
ssl-key (No default value)
ssl-verify-server-cert FALSE
table FALSE
debug-info FALSE
user root
safe-updates FALSE
i-am-a-dummy FALSE
connect_timeout 0
max_allowed_packet 16777216
net_buffer_length 16384
select_limit 1000
max_join_size 1000000
secure-auth FALSE
show-warnings FALSE
>>727
ありがとうございます。
今試してみたんですが、正常に接続出来ました。
またselect、insertも正常に実行できました。
実行結果は以下となります。
C:\>mysql -hlocalhost -P3306 -uroot -p1028 myhp
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 13
Server version: 5.0.67-community-nt MySQL Community Edition (GPL)
Type 'help;' or '\h' for help. Type '\c' to clear the buffer.
上記、「Your MySQL connection id is 13」とありますが、このid is 13というのは
原因に関係してますでしょうか?と思いましたが関係ないですよね。
やはりコマンドプロンプト上からは正常に接続できるのでJDBCの問題なんでしょうか?
どうかアドバイスをお願い致します。
ありがとうございます。
今試してみたんですが、正常に接続出来ました。
またselect、insertも正常に実行できました。
実行結果は以下となります。
C:\>mysql -hlocalhost -P3306 -uroot -p1028 myhp
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 13
Server version: 5.0.67-community-nt MySQL Community Edition (GPL)
Type 'help;' or '\h' for help. Type '\c' to clear the buffer.
上記、「Your MySQL connection id is 13」とありますが、このid is 13というのは
原因に関係してますでしょうか?と思いましたが関係ないですよね。
やはりコマンドプロンプト上からは正常に接続できるのでJDBCの問題なんでしょうか?
どうかアドバイスをお願い致します。
>>728
idが13なのは別に問題ない。勝手に番号が振られる接続識別子かと。
コマンドラインで問題ないなら、Javaから接続するときの固有問題なのかねぇ。
あとは、接続文字列を "jdbc:mysql://localhost:3306/myhp?autoReconnect=true" にして
試してみるとかかなー。
idが13なのは別に問題ない。勝手に番号が振られる接続識別子かと。
コマンドラインで問題ないなら、Javaから接続するときの固有問題なのかねぇ。
あとは、接続文字列を "jdbc:mysql://localhost:3306/myhp?autoReconnect=true" にして
試してみるとかかなー。
>>729
>あとは、接続文字列を "jdbc:mysql://localhost:3306/myhp?autoReconnect=true" にして
試してみるとかかなー。
以下内容で試してみましたが全て同じエラーが発生しました。
conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/myhp?autoReconnect=true");
conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/myhp?autoReconnect=true", "root", "1028");
conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/myhp?autoReconnect=true&user=root&password=1028");
conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/myhp?user=root&password=1028&autoReconnect=true");
com.mysql.jdbc.exceptions.jdbc4.MySQLNonTransientConnectionException: Could not create connection to database server. Attempted reconnect 3 times. Giving up.
at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:39)
at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:27)
at java.lang.reflect.Constructor.newInstance(Constructor.java:513)
>あとは、接続文字列を "jdbc:mysql://localhost:3306/myhp?autoReconnect=true" にして
試してみるとかかなー。
以下内容で試してみましたが全て同じエラーが発生しました。
conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/myhp?autoReconnect=true");
conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/myhp?autoReconnect=true", "root", "1028");
conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/myhp?autoReconnect=true&user=root&password=1028");
conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/myhp?user=root&password=1028&autoReconnect=true");
com.mysql.jdbc.exceptions.jdbc4.MySQLNonTransientConnectionException: Could not create connection to database server. Attempted reconnect 3 times. Giving up.
at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:39)
at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:27)
at java.lang.reflect.Constructor.newInstance(Constructor.java:513)
>>729
すみません途中で送信してしまいました。
上記エラーですが、3回接続を試みてみたけど、databaseとconnectionが繋がらない。諦めてください。
っていう意味ですかね?
う~~ん・・・一体どうしたら良いのか・・・・・
いっそのことOSを初期化するのが近道な気がしてきました。
ひょっとするとeclipseの設定が悪いんですかね?
一度eclipseを入れ直して、もう一度試すか検討してみます。
すみません途中で送信してしまいました。
上記エラーですが、3回接続を試みてみたけど、databaseとconnectionが繋がらない。諦めてください。
っていう意味ですかね?
う~~ん・・・一体どうしたら良いのか・・・・・
いっそのことOSを初期化するのが近道な気がしてきました。
ひょっとするとeclipseの設定が悪いんですかね?
一度eclipseを入れ直して、もう一度試すか検討してみます。
まあ一番問題なのは、原因も分からないうちから再インストールを繰り返すところだけどな。
そこまで入れなおししちゃうと要因が複数になっちゃってる可能性もあるし、
いったんクリーンにして1からやってみるのがいいかもね。
そこまで入れなおししちゃうと要因が複数になっちゃってる可能性もあるし、
いったんクリーンにして1からやってみるのがいいかもね。
すみません。
教えてください。
group by でSUM()関数使用すると、結果が「0」のレコードは表示されませんけど。
「0」は「0」で表示させる方法はありますか?
教えてください。
group by でSUM()関数使用すると、結果が「0」のレコードは表示されませんけど。
「0」は「0」で表示させる方法はありますか?
>>738
varchar型にすれば、ちゃんと"0.5"って入ってくれるよ。
varchar型にすれば、ちゃんと"0.5"って入ってくれるよ。
>>739
0じゃなくて1が入ったことに怒っているのかな?
0じゃなくて1が入ったことに怒っているのかな?
>>738
醤油ぅこと~
醤油ぅこと~
米IBM、サン・マイクロシステムズ買収で交渉
http://jp.reuters.com/article/technologyNews/idJPJAPAN-37047020090318
MySQLどうするつもりかな
http://jp.reuters.com/article/technologyNews/idJPJAPAN-37047020090318
MySQLどうするつもりかな



類似してるかもしれないスレッド
- MySQL 総合 Part12 (1001) - [94%] - 2008/1/30 17:34 ○
- MySQL 総合 Part25 (947) - [94%] - 2017/6/18 6:30
- MySQL 総合 Part13 (996) - [94%] - 2008/6/10 21:02 ☆
- MySQL 総合 Part14 (1001) - [94%] - 2008/11/23 10:17 ☆
- MySQL 総合 Part17 (1001) - [94%] - 2010/6/10 20:47 ○
- MySQL 総合 Part18 (986) - [94%] - 2011/1/17 15:46
- MySQL 総合 Part19 (982) - [94%] - 2011/6/9 2:33
- MySQL 総合 Part26 (860) - [89%] - 2023/2/2 9:30
- MySQL 総合 Part20 (995) - [89%] - 2011/10/17 4:48
- MySQL 総合 Part21 (1001) - [89%] - 2011/12/25 22:16
- MySQL 総合 Part22 (1001) - [89%] - 2012/7/10 16:45
- MySQL 総合 Part23 (992) - [89%] - 2013/8/11 17:00
- MySQL 総合 Part24 (1010) - [89%] - 2015/2/14 4:46
- MySQL vs PostgreSQL Part2 (941) - [31%] - 2022/5/26 1:30 ○
トップメニューへ / →のくす牧場書庫について