質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.44%
MySQL

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

JDBC

JDBC(Java DataBase Connectivity)は、Javaとリーレーショナルデータベースに接続させる基本的なAPIです。Java上でSQLステートメントを発行することで、データベースの種類に影響を受ないDB操作を可能とします。

Spring

Spring Framework は、Javaプラットフォーム向けのオープンソースアプリケーションフレームワークです。 Java Platform上に、 Web ベースのアプリケーションを設計するための拡張機能が数多く用意されています。

Eclipse

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

Q&A

解決済

1回答

14472閲覧

SpringでJDBC経由でMySQLにアクセスするとHTTP500エラーとなってしまいます。

usako

総合スコア31

MySQL

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

JDBC

JDBC(Java DataBase Connectivity)は、Javaとリーレーショナルデータベースに接続させる基本的なAPIです。Java上でSQLステートメントを発行することで、データベースの種類に影響を受ないDB操作を可能とします。

Spring

Spring Framework は、Javaプラットフォーム向けのオープンソースアプリケーションフレームワークです。 Java Platform上に、 Web ベースのアプリケーションを設計するための拡張機能が数多く用意されています。

Eclipse

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

0グッド

0クリップ

投稿2019/05/22 01:19

編集2019/05/22 01:41

前提・実現したいこと

Eclipse,Springを使ってJAVAの勉強をしている初心者です。
元々、受講していた通信教育の課題がDBを使用しておらず、
内部にテーブルを保持している構造だったので、それを
MySQL,jDBCで外部化しようとしています。
ネット等で参考となるプログラムのコードを追記したのですが、
以下のようなエラーメッセージが発生しました。
諸先輩方、程度の低い質問かとは思いますが、何とぞご教授ください
ますよう、お願いいたします。

発生している問題・エラーメッセージ

HTTPステータス 500 - Request processing failed; nested exception is org.springframework.jdbc.CannotGetJdbcConnectionException: Could not get JDBC Connection; nested exception is java.sql.SQLException: The server time zone value '���� (�W����)' is unrecognized or represents more than one time zone. You must configure either the server or JDBC driver (via the serverTimezone configuration property) to use a more specifc time zone value if you want to utilize time zone support.

type 例外レポート

メッセージ Request processing failed; nested exception is org.springframework.jdbc.CannotGetJdbcConnectionException: Could not get JDBC Connection; nested exception is java.sql.SQLException: The server time zone value '���� (�W����)' is unrecognized or represents more than one time zone. You must configure either the server or JDBC driver (via the serverTimezone configuration property) to use a more specifc time zone value if you want to utilize time zone support.

説明 The server encountered an internal error that prevented it from fulfilling this request.

例外
org.springframework.web.util.NestedServletException: Request processing failed; nested exception is org.springframework.jdbc.CannotGetJdbcConnectionException: Could not get JDBC Connection; nested exception is java.sql.SQLException: The server time zone value '���� (�W����)' is unrecognized or represents more than one time zone. You must configure either the server or JDBC driver (via the serverTimezone configuration property) to use a more specifc time zone value if you want to utilize time zone support.
org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:982)
org.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet.java:861)
javax.servlet.http.HttpServlet.service(HttpServlet.java:617)
org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:846)
javax.servlet.http.HttpServlet.service(HttpServlet.java:723)
org.springframework.web.filter.CharacterEncodingFilter.doFilterInternal(CharacterEncodingFilter.java:197)
org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107)

該当のソースコード

◆Controller.java
import java.util.List;
import java.util.Map;

/**start */
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.jdbc.core.JdbcTemplate;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.RequestMapping;
/*e n d/

@Controller
@RequestMapping(value = "/book")
public class AddressBookController {
private static final String INIT = "init";
private static final String REFER = "refer";
private static final String UPDATE = "update";
private static final String LIST = "list";
private static final String INIMSG = "従業員番号を入力してください";
private static final String REFMSG = "情報が取得できました";
private static final String UPDMSG = "情報を更新してください";
private static final String ERRMSG = "該当するデータはありません";

/**start */
@Autowired
private JdbcTemplate jdbcTemplate;
/*e n d/

@RequestMapping(value = "/start") public String init(AddressBookForm form, Model model) {

/**start */
System.out.println("step1");
List<Map<String, Object>> list = jdbcTemplate.queryForList("select * from unit02.addressbook");
model.addAttribute("data", list.get(0).get("name") );
/*e n d/
model.addAttribute("message", INIMSG);
return INIT;
}

@RequestMapping(params = "reference") public String refer(AddressBookForm form, Model model) { Employee employee = RecordManager.selectEmployee(form.getId()); if (employee != null) { form.setName(employee.getName()); form.setPhone(employee.getPhone()); form.setAddress(employee.getAddress()); model.addAttribute("message", REFMSG); return REFER; } else { model.addAttribute("message", ERRMSG); return INIT; } } @RequestMapping(params = "toInit") public String toInit(AddressBookForm form, Model model) { model.addAttribute("message", INIMSG); return INIT; } @RequestMapping(params = "update") public String update(AddressBookForm form, Model model) { Employee employee = RecordManager.selectEmployee(form.getId()); if (employee != null) { form.setName(employee.getName()); form.setPhone(employee.getPhone()); form.setAddress(employee.getAddress()); model.addAttribute("message", UPDMSG); return UPDATE; } else { model.addAttribute("message", ERRMSG); return INIT; } } @RequestMapping(params = "reflection") public String reflection(AddressBookForm form, Model model) { Employee employee = new Employee(form.getId(), form.getName(), form.getPhone(), form.getAddress()); RecordManager.updateEmployee(employee); model.addAttribute("message", INIMSG); return INIT; } @RequestMapping(params = "list") public String list(Model model) { List<Employee> employeeList = RecordManager.getEmployeeList(); model.addAttribute("employeeList", employeeList); model.addAttribute("employeeCount", employeeList.size()); return LIST; }

◆init.jsp
<%@ page session="false" language="java"
contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<%@ page import="java.time.LocalDate"%>
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>
<%@ taglib uri="http://www.springframework.org/tags/form" prefix="form"%>

<!DOCTYPE html> <html> <head> <link rel="stylesheet" type="text/css" href="/address/resources/css/common.css" /> <title>住所録(初期画面)</title> </head> <body> <form:form modelAttribute="addressBookForm" action="/address/book"> <div class="header"> <span class="titleName">住所録</span> <div class="date"><%=LocalDate.now()%></div> </div> <div class="main"> <div class="message"> <c:out value="${message}" /> </div> <div> <span class="itemName">従業員番号:</span> <form:input path="id" size="31" /> </div> </div> <div class="footer"> <div> <input type="submit" name="reference" value="参照" /> </div> <div> <input type="submit" name="update" value="更新" /> </div> <div> <input type="submit" name="list" value="一覧" /> </div> </div> <!-- start --> <p> DB's data is ${data}. </p> <!-- end --> </form:form> </body> </html> ◆pom.xlmに追記 <!-- start --> <dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> <version>8.0.16</version> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-jdbc</artifactId> <version>${org.springframework-version}</version> </dependency> <!-- end -->

◆servlet-context.xlmに追記

<!-- start -->
<beans:bean id="dataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource" > <beans:property name="driverClassName" value="com.mysql.jdbc.Driver" /> <beans:property name="url" value="jdbc:mysql://127.0.0.1:3306/unit02" /> <beans:property name="username" value="root" /> <beans:property name="password" value="mippy333" /> </beans:bean> <beans:bean class="org.springframework.jdbc.core.JdbcTemplate"> <beans:constructor-arg ref="dataSource" /> </beans:bean>
<!-- end -->

試したこと

MySQLのサービスは起動を確認しています。
MySQLのjdbcもeclipseのビルドパスに外部jarとして登録しました。

補足情報(FW/ツールのバージョンなど)

MySQL(jdbc) 8.0.16
Eclipse4.5 Mars Pleiades

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

m.ts10806

2019/05/22 01:26

細かいですが「springs」ではなく「Spring」です。 名前が決まっているものの表記はなるべく正確にすべきと思います。そこで間違えると話にならない場合があります。 エラーやコードはマークダウンのcode機能を利用してご提示ください。 https://teratail.com/help#about-markdown (※ファイルが別の場合はブロックはわけてください)
usako

2019/05/22 01:31

ご指摘ありがとうございます。早速修正しました。
m.ts10806

2019/05/22 01:32

投稿反映されていないようです。
usako

2019/05/22 01:42

すみません、きちんと反映されているのを確認していませんでした。
guest

回答1

0

ベストアンサー

https://blogs.yahoo.co.jp/dk521123/37507213.html

こちらの記事と同内容に見えるので、

解決案

  • 「serverTimezone」を指定する

=> 「serverTimezone=JST」みたいな。

をやってみるのはいかがでしょう。

投稿2019/05/22 01:24

tetsunosuke

総合スコア1292

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

usako

2019/05/22 01:46

ご教授いただいたように、sevlet-context.xmlに?serverTimezone=JSTを追記したらエラーが解消されました。 本当いありがとうございました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.44%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問