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

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

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

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

JDBC

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

Java

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

データベース

データベースとは、データの集合体を指します。また、そのデータの集合体の共用を可能にするシステムの意味を含めます

Q&A

1回答

4549閲覧

MySQLに接続できない問題を解決したい。

Yuki2

総合スコア52

MySQL

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

JDBC

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

Java

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

データベース

データベースとは、データの集合体を指します。また、そのデータの集合体の共用を可能にするシステムの意味を含めます

0グッド

0クリップ

投稿2021/09/27 10:24

編集2021/09/28 04:07

MySQLに接続してテーブルを取得する。

practiceというデータベースを作成済み。
上記からquestionsというテーブルを取得してデータをコンソールに出力したい。

エラーメッセージ

name@name-MacBook-Air mysql % cd /Users/name/Desktop/プログラミング/Java/mission2a/mysql ; /usr/bin/env /Library/Java/JavaVirtualMachines/jdk-16.0.2.jdk/Contents/Home/bin/java --enable-preview -XX:+ShowCodeDetailsInExceptionMessages -Dfile.encoding=UTF-8 @/var/folders/y0/9r31g_m90bngdws8kz_9g1n80000gn/T/cp_5p859e0rxwse6tzfur144lh6l.argfile App java.sql.SQLNonTransientConnectionException: Could not create connection to database server. Attempted reconnect 3 times. Giving up. at com.mysql.cj.jdbc.exceptions.SQLError.createSQLException(SQLError.java:110) at com.mysql.cj.jdbc.exceptions.SQLError.createSQLException(SQLError.java:97) at com.mysql.cj.jdbc.exceptions.SQLError.createSQLException(SQLError.java:89) at com.mysql.cj.jdbc.exceptions.SQLError.createSQLException(SQLError.java:63) at com.mysql.cj.jdbc.exceptions.SQLError.createSQLException(SQLError.java:73) at com.mysql.cj.jdbc.ConnectionImpl.connectWithRetries(ConnectionImpl.java:898) at com.mysql.cj.jdbc.ConnectionImpl.createNewIO(ConnectionImpl.java:823) at com.mysql.cj.jdbc.ConnectionImpl.<init>(ConnectionImpl.java:448) at com.mysql.cj.jdbc.ConnectionImpl.getInstance(ConnectionImpl.java:241) at com.mysql.cj.jdbc.NonRegisteringDriver.connect(NonRegisteringDriver.java:198) at java.sql/java.sql.DriverManager.getConnection(DriverManager.java:677) at java.sql/java.sql.DriverManager.getConnection(DriverManager.java:228) at App.main(App.java:14) Caused by: com.mysql.cj.exceptions.CJCommunicationsException: Communications link failure The last packet sent successfully to the server was 0 milliseconds ago. The driver has not received any packets from the server. at java.base/jdk.internal.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method) at java.base/jdk.internal.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:78) at java.base/jdk.internal.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45) at java.base/java.lang.reflect.Constructor.newInstanceWithCaller(Constructor.java:499) at java.base/java.lang.reflect.Constructor.newInstance(Constructor.java:480) at com.mysql.cj.exceptions.ExceptionFactory.createException(ExceptionFactory.java:61) at com.mysql.cj.exceptions.ExceptionFactory.createException(ExceptionFactory.java:105) at com.mysql.cj.exceptions.ExceptionFactory.createException(ExceptionFactory.java:151) at com.mysql.cj.exceptions.ExceptionFactory.createCommunicationsException(ExceptionFactory.java:167) at com.mysql.cj.protocol.a.NativeSocketConnection.connect(NativeSocketConnection.java:89) at com.mysql.cj.NativeSession.connect(NativeSession.java:119) at com.mysql.cj.jdbc.ConnectionImpl.connectWithRetries(ConnectionImpl.java:842) ... 7 more Caused by: java.net.ConnectException: Connection refused at java.base/sun.nio.ch.Net.connect0(Native Method) at java.base/sun.nio.ch.Net.connect(Net.java:576) at java.base/sun.nio.ch.Net.connect(Net.java:565) at java.base/sun.nio.ch.NioSocketImpl.connect(NioSocketImpl.java:588) at java.base/java.net.SocksSocketImpl.connect(SocksSocketImpl.java:333) at java.base/java.net.Socket.connect(Socket.java:645) at com.mysql.cj.protocol.StandardSocketFactory.connect(StandardSocketFactory.java:156) at com.mysql.cj.protocol.a.NativeSocketConnection.connect(NativeSocketConnection.java:63) ... 9 more

該当のソースコード

java

1 2/* App.java */ 3 4import java.sql.Connection; 5import java.sql.DriverManager; 6import java.sql.PreparedStatement; 7import java.sql.ResultSet; 8import java.sql.SQLException; 9 10public class App { 11 public static void main(String[] args) { 12 Connection con = null; 13 PreparedStatement pstmt = null; 14 ResultSet rs = null; 15 try { 16 // Class.forName("com.mysql.jdbc.Driver"); 17 con = DriverManager.getConnection("jdbc:mysql://localhost/practice?autoReconnect=true&useSSL=false", "root", 18 "root"); 19 pstmt = con.prepareStatement("select * from questions"); 20 rs = pstmt.executeQuery(); 21 while (rs.next()) { 22 System.out.println(rs.getString("question")); 23 System.out.println(rs.getString("A")); 24 System.out.println(rs.getString("B")); 25 System.out.println(rs.getString("C")); 26 System.out.println(rs.getString("D")); 27 } 28 } catch (SQLException e) { 29 e.printStackTrace(); 30 } finally { 31 if (rs != null) { 32 try { 33 rs.close(); 34 } catch (SQLException e) { 35 e.printStackTrace(); 36 } 37 } 38 if (pstmt != null) { 39 try { 40 pstmt.close(); 41 } catch (SQLException e) { 42 e.printStackTrace(); 43 } 44 } 45 if (con != null) { 46 try { 47 con.close(); 48 } catch (SQLException e) { 49 e.printStackTrace(); 50 } 51 } 52 } 53 } 54} 55// import java.sql.Connection; 56// import java.sql.DriverManager; 57// import java.sql.PreparedStatement; 58// import java.sql.ResultSet; 59// import java.sql.SQLException; 60 61// public class App { 62// public static void main(String[] args) { 63 64// Connection con = null; 65// PreparedStatement pstmt = null; 66// ResultSet rs = null; 67 68// try { 69 70// con = DriverManager.getConnection("jdbc:mysql://localhost/test?useSSL=false", 71// "root", "root"); 72 73// pstmt = con.prepareStatement("select * from person"); 74 75// rs = pstmt.executeQuery(); 76 77// while (rs.next()) { 78// System.out.println(rs.getString("name")); 79// System.out.println(rs.getInt("age")); 80// } 81// } catch (SQLException e) { 82// e.printStackTrace(); 83// } finally { 84// if (rs != null) { 85// try { 86// rs.close(); 87// } catch (SQLException e) { 88// e.printStackTrace(); 89// } 90// } 91// if (pstmt != null) { 92// try { 93// pstmt.close(); 94// } catch (SQLException e) { 95// e.printStackTrace(); 96// } 97// } 98// if (con != null) { 99// try { 100// con.close(); 101// } catch (SQLException e) { 102// e.printStackTrace(); 103// } 104// } 105// } 106// } 107// } 108 109/** 110 * Hello world! 111 */ 112// public final class App { 113// private App() { 114// } 115 116// /** 117// * Says hello to the world. 118// * @param args The arguments of the program. 119// */ 120// public static void main(String[] args) { 121// System.out.println("Hello World!"); 122// } 123// } 124

試したこと

java.sql.SQLNonTransientConnectionException: Could not create connection to database server. Attempted reconnect 3 times. Giving up.

上記のエラーを解決するためにターミナルでタイムゾーンをセットした。 mysql> SET GLOBAL time_zone = 'Asia/Tokyo';
ERROR 1298 (HY000): Unknown or incorrect time zone: 'Asia/Tokyo'

タイムゾーンが適切でないとのエラーが出た。

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

vscode
MAMP(MySQL version: 5.7.34)

JDBCのバージョン

mysql-connector-java-8.0.26.jar

###参考サイト
動画を参考に実装を行なった。

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

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

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

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

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

m.ts10806

2021/09/27 11:16

どういう意図があるんでしょう。 > /practice?autoReconnect=true&useSSL=false 環境情報が殆どないので他者には何とも言えません。
guest

回答1

0

Caused by: java.net.ConnectException: Connection refused

「接続が拒絶された」というのが、例外の理由として示されているので、sqlサーバ側のログや、クライアント側の設定を確認するのが、問題解決のために最初にすべきことかと思われます。

 例えば、sqlサーバに接続する際に設定したユーザ名やパスワードにタイプミスがあれば、サーバには接続できません(不正なアクセスと判断されて、Connection refusedになります)

投稿2021/09/27 11:18

coco_bauer

総合スコア6915

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

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

Yuki2

2021/09/28 04:09

ありがとうございます。 ダウンロードしたmysql-connector-java-8.0.26.jarをMAMPのクラスパスに組み込んで再度実行すれば出来ますかね?
退会済みユーザー

退会済みユーザー

2021/09/29 03:22 編集

コマンドラインから  mysql -u root -h localhost -p で接続できるのは確認してみましたか? 下のpracticeは不必要かと思いますよ  //localhost/practice
退会済みユーザー

退会済みユーザー

2021/09/29 03:23

問題を切り分けするために ・そもそもデータベースは動いているのか ・firewall等で接続拒否されていないか ・ユーザー、パスワード間違っていないか ・データベース名間違っていないか などなど
coco_bauer

2021/10/04 01:51

「mysql-connector-java-8.0.26.jarをMAMPのクラスパスに組み込んで」みても、ダメでしょう。 mysqlサーバにconnectしにいってはいる(connectしにいったら、mysqlサーバに拒絶された)という状況ですから。 mysqlサーバがconnectを拒絶した理由が判らないと、それを解決する方策を考えるのは無理があります。 そうした情報は、mysqlサーバ側のログに残されているはずです。(サーバが、どの程度のログを残す設定になっているかによって、十分な情報がログに書かれていない可能性はあります)
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

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

ただいまの回答率
85.44%

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

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

質問する

関連した質問