質問編集履歴

1 エラーメッセージの追加

satoshi08

satoshi08 score 4

2020/01/01 18:23  投稿

MySQLへの接続失敗
### 前提・実現したいこと
現在サーブレットとMySQLを用いて、ローカル環境で簡単なWebアプリを作成しています。
使いたいDB名は「shift」、Table名は「memberlist」なのですが、うまくデータベースに接続できません。
### 発生している問題・エラーメッセージ
```
エラーメッセージ
メッセージは自分でExceptionParametersというクラスに宣言したもので、下のようなものです。
public static final String DATABASE_CONNECTION_EXCEPTION_MESSAGE2="データベースへの接続時にエラー";
スタックトレースはしたのような感じです。わかるようでしたらお願いします。
shift.exception.DatabaseException: データベースへの接続時にエラー
at shift.dao.DAOBase.open(DAOBase.java:26)
at shift.dao.MemberDAO.getmemberInfoBean(MemberDAO.java:23)
at shift.MemberinfoServlet.doGet(MemberinfoServlet.java:28)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:634)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:741)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:231)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)
at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:53)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)
at filter.ExampleFilter.doFilter(ExampleFilter.java:48)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:202)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:96)
at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:526)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:139)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:92)
at org.apache.catalina.valves.AbstractAccessLogValve.invoke(AbstractAccessLogValve.java:678)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:74)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:343)
at org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:367)
at org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:65)
at org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:860)
at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1591)
at org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:49)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)
at java.lang.Thread.run(Thread.java:745)
Caused by: java.sql.SQLSyntaxErrorException: Access denied for user 'user'@'localhost' to database 'shift'
at com.mysql.cj.jdbc.exceptions.SQLError.createSQLException(SQLError.java:120)
at com.mysql.cj.jdbc.exceptions.SQLError.createSQLException(SQLError.java:97)
at com.mysql.cj.jdbc.exceptions.SQLExceptionsMapping.translateException(SQLExceptionsMapping.java:122)
at com.mysql.cj.jdbc.ConnectionImpl.createNewIO(ConnectionImpl.java:836)
at com.mysql.cj.jdbc.ConnectionImpl.<init>(ConnectionImpl.java:456)
at com.mysql.cj.jdbc.ConnectionImpl.getInstance(ConnectionImpl.java:246)
at com.mysql.cj.jdbc.NonRegisteringDriver.connect(NonRegisteringDriver.java:199)
at java.sql.DriverManager.getConnection(DriverManager.java:664)
at java.sql.DriverManager.getConnection(DriverManager.java:247)
at shift.dao.DAOBase.open(DAOBase.java:20)
... 29 more
```
### 該当のソースコード
```java
protected void open() throws DatabaseException, SystemException {
   try {
     Class.forName(DAOParameter.DRIVER_NAME);
     con = DriverManager.getConnection(DAOParameter.CONNECT_STRING,
         DAOParameter.USERID, DAOParameter.PASSWORD);
   } catch (ClassNotFoundException e) {
     throw new SystemException(
         ExceptionParameters.SYSTEM_EXCEPTION_MESSAGE, e);
   } catch (SQLException e) {
     throw new DatabaseException(
         ExceptionParameters.DATABASE_CONNECTION_EXCEPTION_MESSAGE2,
         e);
   }
 }
```
### 試したこと
この部分の2番目のcatchのメッセージが表示されています。
### 補足情報(FW/ツールのバージョンなど)
openメソッドの内容
```java
protected void open() throws DatabaseException, SystemException {
   try {
     Class.forName(DAOParameter.DRIVER_NAME);
     con = DriverManager.getConnection(DAOParameter.CONNECT_STRING,
         DAOParameter.USERID, DAOParameter.PASSWORD);
   } catch (ClassNotFoundException e) {
     throw new SystemException(
         ExceptionParameters.SYSTEM_EXCEPTION_MESSAGE, e);
   } catch (SQLException e) {
     throw new DatabaseException(
         ExceptionParameters.DATABASE_CONNECTION_EXCEPTION_MESSAGE2,
         e);
   }
 }
```
パラメーター詳細
```java
public class DAOParameter {
public static final String DRIVER_NAME = "com.mysql.jdbc.Driver";
public static final String CONNECT_STRING=
"jdbc:mysql://localhost:3306/shift?serverTimezone=JST";
public static final String USERID = "user";
public static final String PASSWORD="password";
}
```
  • Java

    24634 questions

    Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

  • MySQL

    11844 questions

    MySQL(マイエスキューエル)は、TCX DataKonsultAB社などが開発するRDBMS(リレーショナルデータベースの管理システム)です。世界で最も人気の高いシステムで、オープンソースで開発されています。MySQLデータベースサーバは、高速性と信頼性があり、Linux、UNIX、Windowsなどの複数のプラットフォームで動作することができます。

  • Eclipse

    3103 questions

    Eclipseは、IBM社で開発された統合開発環境のひとつです。2001年11月にオープンソース化されました。 たくさんのプラグインがあり自由に機能を追加をすることができるため、開発ツールにおける共通プラットフォームとして位置づけられています。 Eclipse自体は、Javaで実装されています。

  • SQL

    5659 questions

    SQL(Structured Query Language)は、リレーショナルデータベース管理システム (RDBMS)のデータベース言語です。大きく分けて、データ定義言語(DDL)、データ操作言語(DML)、データ制御言語(DCL)の3つで構成されており、プログラム上でSQL文を生成して、RDBMSに命令を出し、RDBに必要なデータを格納できます。また、格納したデータを引き出すことも可能です。

  • サーブレット

    282 questions

    サーブレット(Servlets)とはウェブやアプリケーションサーバー上に動くプログラムのことであり、ウェブブラウザや他のHTTPクライエントとデータベースやHTTPサーバー上のアプリケーションの中間層としての働きをします。

思考するエンジニアのためのQ&Aサイト「teratail」について詳しく知る