前提・実現したいこと
現在サーブレットと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
1protected void open() throws DatabaseException, SystemException { 2 try { 3 Class.forName(DAOParameter.DRIVER_NAME); 4 con = DriverManager.getConnection(DAOParameter.CONNECT_STRING, 5 DAOParameter.USERID, DAOParameter.PASSWORD); 6 } catch (ClassNotFoundException e) { 7 throw new SystemException( 8 ExceptionParameters.SYSTEM_EXCEPTION_MESSAGE, e); 9 } catch (SQLException e) { 10 throw new DatabaseException( 11 ExceptionParameters.DATABASE_CONNECTION_EXCEPTION_MESSAGE2, 12 e); 13 } 14 }
試したこと
この部分の2番目のcatchのメッセージが表示されています。
補足情報(FW/ツールのバージョンなど)
openメソッドの内容
java
1protected void open() throws DatabaseException, SystemException { 2 try { 3 Class.forName(DAOParameter.DRIVER_NAME); 4 con = DriverManager.getConnection(DAOParameter.CONNECT_STRING, 5 DAOParameter.USERID, DAOParameter.PASSWORD); 6 } catch (ClassNotFoundException e) { 7 throw new SystemException( 8 ExceptionParameters.SYSTEM_EXCEPTION_MESSAGE, e); 9 } catch (SQLException e) { 10 throw new DatabaseException( 11 ExceptionParameters.DATABASE_CONNECTION_EXCEPTION_MESSAGE2, 12 e); 13 } 14 }
パラメーター詳細
java
1public class DAOParameter { 2public static final String DRIVER_NAME = "com.mysql.jdbc.Driver"; 3public static final String CONNECT_STRING= 4"jdbc:mysql://localhost:3306/shift?serverTimezone=JST"; 5public static final String USERID = "user"; 6public static final String PASSWORD="password"; 7} 8