- ベストアンサー
TomcatとMySQLの連携について
あるプログラムを作っていますが、jdbcを経由してのmysqlへのデータ登録がうまくいきません。 Tomcatとmysqlのログも確認していますが、特にエラーなどは見られません。 ログに表示されない場合はどのように対処すればいいのでしょうか。 以下環境です。 ubunntu 12.04 Apache Tomcat/7.0.52 JVM 1.7.0_51-b13 MySQL 5.5.35
- みんなの回答 (4)
- 専門家の回答
質問者が選んだベストアンサー
#3です。 自分で分かる情報を取得しましょう。 ファイルを決めて(例えば、/tmp/debeg.txtとか)、自分が必要であると思う情報を時刻と一緒に追加書きしていくことです。 不十分な情報で他人に検証をさせるべきではありません。 MySQLは大して使ったことはありませんが、ログからしたら、insertしてselectを繰り返しているように見えます。 DBにデータが入っているを何らかのツールを使って確認してみて、 ・入っていれば、select以降の問題。 ・入っていなければ、insert以前の問題 と切り分けることが出来ます。 このように範囲を絞っていくとこで原因を突き止めましょう。 また、tomcatのログにjavaのexceptionとかの情報は入っていませんか。こちらも確認願います。 なお、servletは敷居が高いです。主要ロジックだけでも単体javaで動作さてみるとデバッグは容易になります。
その他の回答 (3)
- いけだ ひろし(@ike-2000)
- ベストアンサー率53% (69/129)
事実を確認するところから始めるべきです。 ログに表示されないならば、「自分でログを取得する」ロジックを入れ込んでどこまで正しく処理が進んでいるか確かめる必要があります。 通常はインフラ屋さんがこの辺りの機能を実装/提供してくれます。 コネクトまで大丈夫であれば、SQLの中身、その実行結果等をテキストファイルににでも書きだすようにしておけば、どこまで正しく動作しているかの事実確認が出来ます。
- hehejava
- ベストアンサー率0% (0/1)
jdbcのクラスパスは通していますか 通してない場合は CASSPATH=.;$JAVA_HOME/Lib/mysql-connector-java-1.7.0-bin.jar export CASSPATH ドライバーをダウンロードし、解凍した中にjarファイルにクラスパスを通しておく必要があるのですが、 あとはjdbcをロード出来るか確認してみるのもいいと思います。
補足
アドバイスありがとうございます。 別のプログラムを組み、ロードができていることを確認しました。また、データベースへの接続、切断も問題なしです。 なぜこのようなことが起きるのでしょうか。
- LancerVII
- ベストアンサー率51% (1060/2054)
こんにちは。 デバッカー等は使ってないのでしょうか? ログに出ないのであれば一つ一つ動作を確認してみるしかないです。 また、うまくいかないと思った根拠は何でしょうか?
補足
回答有難うございます。 デバッカーとは何でしょうか。 普段はNetbeansで作業をしています。 うまくいかないと思った根拠は、入力した情報がMySQLへ 登録されないためです。
補足
”ロジック”がわかりませんでしたが、MySQLの一般クエリログを取得してみました。 以下になります。 ここから、インサート処理がなぜできないかヒントが得られますか。 また、インサート処理のコードはこちらです。 http://www.javadrive.jp/servlet/schedule/index9.html お忙しいと思いますがご回答をよろしくお願いします。 39 Connect root@localhost on servletschedule 39 Query /* mysql-connector-java-5.1.29 ( Revision: alexander.soklakov@oracle.com-20140120140810-s44574olh90i6i4l ) */SHOW VARIABLES WHERE Variable_name ='language' OR Variable_name = 'net_write_timeout' OR Variable_name = 'interactive_timeout' OR Variable_name = 'wait_timeout' OR Variable_name = 'character_set_client' OR Variable_name = 'character_set_connection' OR Variable_name = 'character_set' OR Variable_name = 'character_set_server' OR Variable_name = 'tx_isolation' OR Variable_name = 'transaction_isolation' OR Variable_name = 'character_set_results' OR Variable_name = 'timezone' OR Variable_name = 'time_zone' OR Variable_name = 'system_time_zone' OR Variable_name = 'lower_case_table_names' OR Variable_name = 'max_allowed_packet' OR Variable_name = 'net_buffer_length' OR Variable_name = 'sql_mode' OR Variable_name = 'query_cache_type' OR Variable_name = 'query_cache_size' OR Variable_name = 'init_connect' 39 Query /* mysql-connector-java-5.1.29 ( Revision: alexander.soklakov@oracle.com-20140120140810-s44574olh90i6i4l ) */SELECT @@session.auto_increment_increment 39 Query SET character_set_results = NULL 39 Query SET autocommit=1 39 Query SET sql_mode='STRICT_TRANS_TABLES' 39 Query insert into schedule (userid, scheduledate, starttime, endtime, schedule, schedulememo) values (1, '2014-3-8', '2:0:00', '3:0:00', 'test', 'test') 39 Quit 140307 21:13:06 37 Query SELECT * FROM schedule WHERE userid = 1 and scheduledate = '2014-3-1' ORDER BY starttime 37 Query SELECT * FROM schedule WHERE userid = 1 and scheduledate = '2014-3-2' ORDER BY starttime . . . 37 Query SELECT * FROM schedule WHERE userid = 1 and scheduledate = '2014-3-31' ORDER BY starttime