1

MAMPがインストールされたMacBook Proを使用しています。MAMP 側のすべてが正常に動作しています。また、JDBCコネクタもその場所にあります。

問題は、Java コードを介して MySQL に接続しようとすると、次のエラー メッセージが表示されることです。

com.mysql.jdbc.exceptions.jdbc4.CommunicationsException: 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 sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:39)
at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:27)
at java.lang.reflect.Constructor.newInstance(Constructor.java:513)
at com.mysql.jdbc.Util.handleNewInstance(Util.java:411)
at com.mysql.jdbc.SQLError.createCommunicationsException(SQLError.java:1116)
at com.mysql.jdbc.MysqlIO.<init>(MysqlIO.java:348)
at com.mysql.jdbc.ConnectionImpl.coreConnect(ConnectionImpl.java:2391)
at com.mysql.jdbc.ConnectionImpl.connectOneTryOnly(ConnectionImpl.java:2428)
at com.mysql.jdbc.ConnectionImpl.createNewIO(ConnectionImpl.java:2213)
at com.mysql.jdbc.ConnectionImpl.<init>(ConnectionImpl.java:797)
at com.mysql.jdbc.JDBC4Connection.<init>(JDBC4Connection.java:47)
at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:39)
at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:27)
at java.lang.reflect.Constructor.newInstance(Constructor.java:513)
at com.mysql.jdbc.Util.handleNewInstance(Util.java:411)
at com.mysql.jdbc.ConnectionImpl.getInstance(ConnectionImpl.java:389)
at com.mysql.jdbc.NonRegisteringDriver.connect(NonRegisteringDriver.java:305)
at java.sql.DriverManager.getConnection(DriverManager.java:582)
at java.sql.DriverManager.getConnection(DriverManager.java:185)
at DatabaseConnection.<init>(DatabaseConnection.java:22)
at Main.main(Main.java:10)
Caused by: java.net.ConnectException: Connection refused
at java.net.PlainSocketImpl.socketConnect(Native Method)
at java.net.PlainSocketImpl.doConnect(PlainSocketImpl.java:351)
at java.net.PlainSocketImpl.connectToAddress(PlainSocketImpl.java:213)
at java.net.PlainSocketImpl.connect(PlainSocketImpl.java:200)
at java.net.SocksSocketImpl.connect(SocksSocketImpl.java:432)
at java.net.Socket.connect(Socket.java:529)
at java.net.Socket.connect(Socket.java:478)
at java.net.Socket.<init>(Socket.java:375)
at java.net.Socket.<init>(Socket.java:218)
at com.mysql.jdbc.StandardSocketFactory.connect(StandardSocketFactory.java:257)
at com.mysql.jdbc.MysqlIO.<init>(MysqlIO.java:298)
... 16 more

そして、これが私のJavaコードの接続ステートメントです(資格情報も確認しました):

connection = DriverManager.getConnection("jdbc:mysql:///"+databaseName, userName, password);

iMac に同じインストールとコードを使用すると、すべてが正常に機能するため、これは完全に私を夢中にさせます。

では、Java を介して MySQL に接続できない私の MacBook Pro の何が問題になっているのでしょうか?

4

3 に答える 3

3

MAMP、mysql J コネクタ、Java、および「通信リンク障害」の例外に対する解決策は、mysql サーバーの新しいコピーをインストールすることによって最もよく解決されました。

MAMP バージョンの mysql では、デフォルトで TCP/IP ポートがオフになっていると思います。以下の手順を実行すると、オンにすることができます。ただし、これらの手順はどれもうまくいかず、デフォルトのインストールでネットワーク接続が機能する mysql サーバーの新しいコピーをインストールする方がはるかに簡単であることがわかりました。

次の手順に従って、MAMP mysql のネットワーク アクセスを試すことができます。「MAMP Pro」を起動します(これらの機能は無料版では利用できません)」:

を。メニュー「ファイル」->「テンプレートの編集」->「MySQL my.cnf」に移動し、次の 2 行を編集します。他のものを変更しないように注意してください。

bind-address = 0.0.0.0
#MAMP_skip-networking_MAMP    

b. 「サーバー」タブの「ローカル アクセスのみを許可する」のチェックを外します。

これらの手順を実行した後、TCP/IP アクセスを確認します。

netstat -tln | grep mysql

于 2013-11-01T13:56:45.703 に答える
3

まず、MacBook でいくつかの診断を行う必要があります。
ドライバーがパケットを受信して​​いないため...
つまり、接続がないことを意味します。

ターミナル ウィンドウを開き、次の操作を行います。

su
--> enter password
mysql
--> does mysql start?
telnet localhost 3306
--> do you get a response?
ps -ef |grep mysql
--> do you see a mysql instance?
less /etc/my.cnf
--> check out the settings, what port number is used?
于 2012-05-20T14:42:19.970 に答える