元スレMySQL 総合 Part15
mysql覧 / PC版 /みんなの評価 : ☆
701 = :
申し訳ありません。
適当なスレッドが無かったので、ここで質問させて下さい。
現在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)
702 = :
コネクション使い切ってんじゃないの?
解決策はともかく、原因調べるためにアプリケーションサーバのほう再起動してみては
703 = :
>>701
WebサーバからDBサーバへ、コンソール経由で同じ接続情報で試してみよう。
それで接続できないようなら、JDBC以前の問題。
706 = :
echoでいいじゃん
707 = :
>>706
できましたーーー!ありがとうございます!
708 = :
>>697
「PHP,」で検索すれば?
709 = :
>>698
よくわかりませんが、いろいろ検索して調べてみます。
ありがとうございます。
>>708
ありがとうございます。
しかしそれだと、「PHP」を検索したつもりが、「Cake PHP」にも引っかかる、という事態になります。
また、「Smarty,PHP」となっていた場合、引っかからなくなるという問題もあります。
710 = :
>>709
select tags from blog where tags regexp '(^|[^[:alnum:]])PHP([^[:alnum:]]|$)';
ただし、1000レコードを超えるテーブルとかだと重すぎて使い物にならないかもしれん。
711 = :
>>709
いろいろやってみる前に正規化について短めのドキュメントでも
読んでおいた方が良い。DB設計の根っ子の話だから。
基本的にこの手の問題は全文検索インデックスでも使わない限り
ちゃんと正規化しないと全行スキャンになってスピードが出ない。
10000件記事があったら毎度10000件検索するはめになる。
712 = :
710だが、リファレンスよく読んだら regexp '[[:<:]]PHP[[:>:]]' で済むことに後から気づいた。
とはいえ、みんな言ってるようにDB設計上は邪道なのでsplitされたものを格納することを激しく推奨する。
特にタグ情報とかだと、いずれgroup byで集計したくなる場面が出てきたときに
今の設計のままだと後悔するぞ。
715 = :
どなたか>>704をお願いします。
716 = :
>>715
MySQL Administratorのテーブルエディタに、フィールドのコメント欄があった気がする。
717 = :
>>714
ありがとうございますー
720 = :
>>719
ありがとうございます!
721 = :
>>702
アプリケーションサーバーはもちろん、PCを再起動しても接続出来ません。
コネクションについても調べてみましたが、やはりコネクション自体はひとつしか使っていませんでした。
show processlistで確認。
>>703
>WebサーバからDBサーバへ、コンソール経由で同じ接続情報で試してみよう。
とはどういうことでしょうか?
現状ローカルPC内で開発しております。
違うプロジェクトを作成し、そこからアクセスしても繋がりません。
いろいろ調べてみると、どうやらclose()の仕方が悪かったのではと思います。
運用開始してしばらくは正常に接続できたので、その間にコネクション?が一杯になり
アクセス出来なくなったのではと勝手に思っておるのですが、このコネクション?の解放方法
が分かれば教えてください。
ただ、そうするとMySQLをアンインストールして入れ直したのにコネクションが解放されてない
ということで問題だと思うのですが・・・・ともかくいろいろ調査したのですが、原因がさっぱり
分かりません。どうかお助け下さい。
722 = :
そのローカルで別の手段でMySQLにアクセスしてみるってことだよ。
最初の問題と後のでは理由が違う気がするが。
再インストールした時点で設定変わっちゃってないか?
もうちょっと環境を詳しく書いてくれないか、もしWindowsならFWとかも。
723 = :
>>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ですかね?
724 = :
>>723
>>703 で指摘してあるように、確実に同じ接続情報で試してみた?
Java側で
DriverManager.getConnection("jdbc:mysql://mymachine/");
としてるなら、コンソールでは
> mysql -hmymachine
みたいにしないと同じ接続情報にはならないよ。
725 = :
>>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
という風に接続してみろってことですね。
わかりました。やってみます。
726 = :
>>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
727 = :
>>726
引数間違えてる。
mysql -hlocalhost -P3306 -uroot -p1028 myhp
728 = :
>>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の問題なんでしょうか?
どうかアドバイスをお願い致します。
729 = :
>>728
idが13なのは別に問題ない。勝手に番号が振られる接続識別子かと。
コマンドラインで問題ないなら、Javaから接続するときの固有問題なのかねぇ。
あとは、接続文字列を "jdbc:mysql://localhost:3306/myhp?autoReconnect=true" にして
試してみるとかかなー。
730 = :
>>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)
731 = :
>>729
すみません途中で送信してしまいました。
上記エラーですが、3回接続を試みてみたけど、databaseとconnectionが繋がらない。諦めてください。
っていう意味ですかね?
う~~ん・・・一体どうしたら良いのか・・・・・
いっそのことOSを初期化するのが近道な気がしてきました。
ひょっとするとeclipseの設定が悪いんですかね?
一度eclipseを入れ直して、もう一度試すか検討してみます。
732 = :
まあ一番問題なのは、原因も分からないうちから再インストールを繰り返すところだけどな。
そこまで入れなおししちゃうと要因が複数になっちゃってる可能性もあるし、
いったんクリーンにして1からやってみるのがいいかもね。
733 = :
>>732
はい。そうしてみます。
eclipse、tomcat、mysql、jdbc、java、全部一度アンインストールして入れ直して試してみます。
長々とお付き合い頂き、ありがとうございました。
735 = :
COALESCE(SUM(何とか),0)とか
736 = :
ただ、結果が0なのではなくて0件で1度も足してないだけだと思うけどね。
737 = :
>>735-736
どうもです。
後で確認してみます。
740 = :
>>739
0じゃなくて1が入ったことに怒っているのかな?
741 = :
四捨五入されちゃうのかな。
742 = :
整数型だもんな
743 = :
>>738
醤油ぅこと~
746 = :
米IBM、サン・マイクロシステムズ買収で交渉
http://jp.reuters.com/article/technologyNews/idJPJAPAN-37047020090318
MySQLどうするつもりかな
747 = :
どうもせんだろ。おいしく頂くだけでは?
DB2とはうまく棲み分けできそうだし。
748 = :
SUNってそんなやばかったんか
750 = :
むしろ、その逆。
みんなの評価 : ☆
類似してるかもしれないスレッド
- 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 ○
トップメニューへ / →のくす牧場書庫について