のくす牧場
コンテンツ
牧場内検索
カウンタ
総計:127,620,483人
昨日:no data人
今日:
最近の注目
人気の最安値情報

    私的良スレ書庫

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

    元スレMySQL 総合 Part15

    mysql スレッド一覧へ / mysql とは? / 携帯版 / dat(gz)で取得 / トップメニュー
    スレッド評価: スレッド評価について
    みんなの評価 :
    タグ : - insertall + - mregexp + - SSD + 追加: タグについて ※前スレ・次スレは、スレ番号だけ登録。駄スレにはタグつけず、スレ評価を。荒らしタグにはタグで対抗せず、タグ減点を。
    レスフィルター : (試験中)
    ←前へ 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 次へ→ / 要望・削除依頼は掲示板へ / 管理情報はtwitter
    701 : NAME IS - 2009/03/16(月) 13:50:33 ID:??? (+57,-30,+0)
    申し訳ありません。
    適当なスレッドが無かったので、ここで質問させて下さい。

    現在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 : NAME IS - 2009/03/16(月) 14:11:53 ID:??? (+56,+22,-27)
    コネクション使い切ってんじゃないの?
    解決策はともかく、原因調べるためにアプリケーションサーバのほう再起動してみては
    703 : NAME IS - 2009/03/16(月) 14:31:58 ID:??? (+4,-29,-52)
    >>701
    WebサーバからDBサーバへ、コンソール経由で同じ接続情報で試してみよう。
    それで接続できないようなら、JDBC以前の問題。
    706 : NAME IS - 2009/03/16(月) 20:15:55 ID:??? (+1,-29,-1)
    echoでいいじゃん
    707 : NAME IS - 2009/03/16(月) 21:02:43 ID:??? (+53,+24,+0)
    >>706
    できましたーーー!ありがとうございます!
    708 : NAME IS - 2009/03/16(月) 22:07:41 ID:??? (+59,+23,-6)
    >>697
    「PHP,」で検索すれば?
    709 : NAME IS - 2009/03/16(月) 23:29:39 ID:??? (+81,+29,-57)
    >>698
    よくわかりませんが、いろいろ検索して調べてみます。
    ありがとうございます。

    >>708
    ありがとうございます。
    しかしそれだと、「PHP」を検索したつもりが、「Cake PHP」にも引っかかる、という事態になります。
    また、「Smarty,PHP」となっていた場合、引っかからなくなるという問題もあります。
    710 : NAME IS - 2009/03/16(月) 23:48:00 ID:??? (+12,-30,-45)
    >>709
    select tags from blog where tags regexp '(^|[^[:alnum:]])PHP([^[:alnum:]]|$)';
    ただし、1000レコードを超えるテーブルとかだと重すぎて使い物にならないかもしれん。
    711 : NAME IS - 2009/03/17(火) 00:00:58 ID:??? (+73,+29,-83)
    >>709
    いろいろやってみる前に正規化について短めのドキュメントでも
    読んでおいた方が良い。DB設計の根っ子の話だから。
    基本的にこの手の問題は全文検索インデックスでも使わない限り
    ちゃんと正規化しないと全行スキャンになってスピードが出ない。
    10000件記事があったら毎度10000件検索するはめになる。
    712 : NAME IS - 2009/03/17(火) 00:15:52 ID:??? (+3,-30,-89)
    710だが、リファレンスよく読んだら regexp '[[:<:]]PHP[[:>:]]' で済むことに後から気づいた。
    とはいえ、みんな言ってるようにDB設計上は邪道なのでsplitされたものを格納することを激しく推奨する。
    特にタグ情報とかだと、いずれgroup byで集計したくなる場面が出てきたときに
    今の設計のままだと後悔するぞ。
    714 : NAME IS - 2009/03/17(火) 01:18:35 ID:??? (-3,-30,-22)
    >>713
    insert into hogetbl (no1, no2, no3) select 11, max(no2) + 1, 33 from hogetbl;
    715 : NAME IS - 2009/03/17(火) 01:25:51 ID:??? (+36,+21,+0)
    どなたか>>704をお願いします。
    716 : NAME IS - 2009/03/17(火) 01:53:53 ID:??? (+2,-29,-48)
    >>715
    MySQL Administratorのテーブルエディタに、フィールドのコメント欄があった気がする。
    717 : 0 - 2009/03/17(火) 03:15:04 ID:??? (+52,+29,+2)
    >>714
    ありがとうございますー
    719 : NAME IS - 2009/03/17(火) 13:14:07 ID:??? (-1,-30,-91)
    >>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;
    という感じか。かえって遅くなりそうだな。
    720 : NAME IS - 2009/03/17(火) 13:30:24 ID:??? (+32,+10,+1)
    >>719
    ありがとうございます!
    721 : 701 - 2009/03/17(火) 17:21:28 ID:??? (+67,+29,-274)
    >>702
    アプリケーションサーバーはもちろん、PCを再起動しても接続出来ません。
    コネクションについても調べてみましたが、やはりコネクション自体はひとつしか使っていませんでした。
    show processlistで確認。

    >>703
    >WebサーバからDBサーバへ、コンソール経由で同じ接続情報で試してみよう。
    とはどういうことでしょうか?
    現状ローカルPC内で開発しております。

    違うプロジェクトを作成し、そこからアクセスしても繋がりません。
    いろいろ調べてみると、どうやらclose()の仕方が悪かったのではと思います。
    運用開始してしばらくは正常に接続できたので、その間にコネクション?が一杯になり
    アクセス出来なくなったのではと勝手に思っておるのですが、このコネクション?の解放方法
    が分かれば教えてください。

    ただ、そうするとMySQLをアンインストールして入れ直したのにコネクションが解放されてない
    ということで問題だと思うのですが・・・・ともかくいろいろ調査したのですが、原因がさっぱり
    分かりません。どうかお助け下さい。
    722 : NAME IS - 2009/03/17(火) 17:44:04 ID:??? (+64,+29,-99)
    そのローカルで別の手段でMySQLにアクセスしてみるってことだよ。
    最初の問題と後のでは理由が違う気がするが。
    再インストールした時点で設定変わっちゃってないか?

    もうちょっと環境を詳しく書いてくれないか、もしWindowsならFWとかも。
    723 : NAME IS - 2009/03/17(火) 19:59:08 ID:??? (+13,-30,+0)
    >>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 : NAME IS - 2009/03/17(火) 20:14:15 ID:??? (+7,-30,-80)
    >>723
    >>703 で指摘してあるように、確実に同じ接続情報で試してみた?
    Java側で
    DriverManager.getConnection("jdbc:mysql://mymachine/");
    としてるなら、コンソールでは
    > mysql -hmymachine
    みたいにしないと同じ接続情報にはならないよ。
    725 : NAME IS - 2009/03/17(火) 21:05:52 ID:??? (+3,-30,-156)
    >>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 : NAME IS - 2009/03/17(火) 21:10:54 ID:??? (+5,-30,+0)
    >>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 : NAME IS - 2009/03/17(火) 21:59:42 ID:??? (+0,-30,-12)
    >>726
    引数間違えてる。
    mysql -hlocalhost -P3306 -uroot -p1028 myhp
    728 : NAME IS - 2009/03/17(火) 23:29:39 ID:??? (+4,-30,-230)
    >>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 : NAME IS - 2009/03/18(水) 00:37:12 ID:??? (+7,-30,-67)
    >>728
    idが13なのは別に問題ない。勝手に番号が振られる接続識別子かと。
    コマンドラインで問題ないなら、Javaから接続するときの固有問題なのかねぇ。
    あとは、接続文字列を "jdbc:mysql://localhost:3306/myhp?autoReconnect=true" にして
    試してみるとかかなー。
    730 : NAME IS - 2009/03/18(水) 10:21:35 ID:??? (+3,-30,+0)
    >>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 : 701 - 2009/03/18(水) 10:32:37 ID:??? (+8,-25,-130)
    >>729
    すみません途中で送信してしまいました。

    上記エラーですが、3回接続を試みてみたけど、databaseとconnectionが繋がらない。諦めてください。
    っていう意味ですかね?

    う~~ん・・・一体どうしたら良いのか・・・・・
    いっそのことOSを初期化するのが近道な気がしてきました。

    ひょっとするとeclipseの設定が悪いんですかね?
    一度eclipseを入れ直して、もう一度試すか検討してみます。
    732 : NAME IS - 2009/03/18(水) 10:52:32 ID:??? (+66,+29,-41)
    まあ一番問題なのは、原因も分からないうちから再インストールを繰り返すところだけどな。
    そこまで入れなおししちゃうと要因が複数になっちゃってる可能性もあるし、
    いったんクリーンにして1からやってみるのがいいかもね。
    733 : NAME IS - 2009/03/18(水) 11:10:23 ID:??? (+11,-29,-36)
    >>732
    はい。そうしてみます。

    eclipse、tomcat、mysql、jdbc、java、全部一度アンインストールして入れ直して試してみます。

    長々とお付き合い頂き、ありがとうございました。
    734 : NAME IS - 2009/03/18(水) 11:11:24 ID:??? (-1,-29,-49)
    すみません。
    教えてください。

    group by でSUM()関数使用すると、結果が「0」のレコードは表示されませんけど。
    「0」は「0」で表示させる方法はありますか?
    735 : NAME IS - 2009/03/18(水) 11:57:37 ID:??? (+7,-29,-12)
    COALESCE(SUM(何とか),0)とか
    736 : NAME IS - 2009/03/18(水) 11:59:29 ID:??? (+57,+29,-18)
    ただ、結果が0なのではなくて0件で1度も足してないだけだと思うけどね。
    737 : NAME IS - 2009/03/18(水) 14:15:53 ID:??? (+58,+29,-1)
    >>735-736
    どうもです。
    後で確認してみます。
    739 : NAME IS - 2009/03/18(水) 14:39:37 ID:??? (-2,-29,-3)
    >>738
    varchar型にすれば、ちゃんと"0.5"って入ってくれるよ。
    740 : NAME IS - 2009/03/18(水) 15:02:45 ID:??? (+57,+29,-5)
    >>739
    0じゃなくて1が入ったことに怒っているのかな?
    741 : NAME IS - 2009/03/18(水) 15:37:40 ID:??? (+52,+29,+2)
    四捨五入されちゃうのかな。
    742 : NAME IS - 2009/03/18(水) 17:12:25 ID:??? (+43,+25,-1)
    整数型だもんな
    743 : NAME IS - 2009/03/18(水) 17:46:29 ID:??? (+38,+23,+0)
    >>738
    醤油ぅこと~
    745 : NAME IS - 2009/03/18(水) 22:47:55 ID:??? (-2,-20,-14)
    SUN死亡か
    746 : NAME IS - 2009/03/19(木) 02:12:27 ID:??? (+4,-23,-8)
    米IBM、サン・マイクロシステムズ買収で交渉
    http://jp.reuters.com/article/technologyNews/idJPJAPAN-37047020090318

    MySQLどうするつもりかな
    747 : NAME IS - 2009/03/19(木) 07:57:53 ID:??? (+57,+29,-12)
    どうもせんだろ。おいしく頂くだけでは?
    DB2とはうまく棲み分けできそうだし。
    748 : NAME IS - 2009/03/19(木) 10:58:40 ID:??? (+51,+28,-15)
    SUNってそんなやばかったんか
    749 : NAME IS - 2009/03/19(木) 11:00:32 ID:??? (-1,-29,-19)
    eclipse 沈没で netbeans 浮上?
    750 : NAME IS - 2009/03/20(金) 09:39:55 ID:??? (+51,+28,-1)
    むしろ、その逆。

    ←前へ 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 次へ→ / 要望・削除依頼は掲示板へ / 管理情報はtwitterで / mysql スレッド一覧へ
    スレッド評価: スレッド評価について
    みんなの評価 :
    タグ : - insertall + - mregexp + - SSD + 追加: タグについて ※前スレ・次スレは、スレ番号だけ登録。駄スレにはタグつけず、スレ評価を。荒らしタグにはタグで対抗せず、タグ減点を。

    類似してるかもしれないスレッド


    トップメニューへ / →のくす牧場書庫について