2013-04-17 97 views
3

我正在處理使用JDBC在Amazon RDS上連接到我的MySQL數據庫的奇怪問題。我有兩個不同的Android手機在同一個網絡上運行相同的代碼。一個連接沒有任何問題。另一種是讓我有以下異常:MySQLNonTransientConnectionException:無法創建與數據庫服務器的連接

com.mysql.jdbc.exceptions.jdbc4.MySQLNonTransientConnectionException: Could not create connection to database server. 
    at java.lang.reflect.Constructor.constructNative(Native Method) 
    at java.lang.reflect.Constructor.newInstance(Constructor.java:417) 
    at com.mysql.jdbc.Util.handleNewInstance(Util.java:411) 
    at com.mysql.jdbc.Util.getInstance(Util.java:386) 
    at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:1014) 
    at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:988) 
    at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:974) 
    at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:919) 
    at com.mysql.jdbc.ConnectionImpl.connectOneTryOnly(ConnectionImpl.java:2547) 
    at com.mysql.jdbc.ConnectionImpl.createNewIO(ConnectionImpl.java:2283) 
    at com.mysql.jdbc.ConnectionImpl.<init>(ConnectionImpl.java:822) 
    at com.mysql.jdbc.JDBC4Connection.<init>(JDBC4Connection.java:47) 
    at java.lang.reflect.Constructor.constructNative(Native Method) 
    at java.lang.reflect.Constructor.newInstance(Constructor.java:417) 
    at com.mysql.jdbc.Util.handleNewInstance(Util.java:411) 
    at com.mysql.jdbc.ConnectionImpl.getInstance(ConnectionImpl.java:404) 
    at com.mysql.jdbc.NonRegisteringDriver.connect(NonRegisteringDriver.java:317) 
    at java.sql.DriverManager.getConnection(DriverManager.java:175) 
    at java.sql.DriverManager.getConnection(DriverManager.java:209) 
    at edu.ucsb.cs.epsilon.ucsb360.DatabaseManager.Connect(DatabaseManager.java:32) 
    at edu.ucsb.cs.epsilon.ucsb360.Global.applicationResumed(Global.java:31) 
    at edu.ucsb.cs.epsilon.ucsb360.MainActivity.onResume(MainActivity.java:54) 
    at android.app.Instrumentation.callActivityOnResume(Instrumentation.java:1236) 
    at android.app.Activity.performResume(Activity.java:4625) 
    at android.app.ActivityThread.performResumeActivity(ActivityThread.java:2834) 
    at android.app.ActivityThread.handleResumeActivity(ActivityThread.java:2889) 
    at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1303) 
    at android.os.Handler.dispatchMessage(Handler.java:99) 
    at android.os.Looper.loop(Looper.java:156) 
    at android.app.ActivityThread.main(ActivityThread.java:5045) 
    at java.lang.reflect.Method.invokeNative(Native Method) 
    at java.lang.reflect.Method.invoke(Method.java:511) 
    at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:784) 
    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:551) 
    at dalvik.system.NativeStart.main(Native Method) 
Caused by: android.os.NetworkOnMainThreadException 
    at android.os.StrictMode$AndroidBlockGuardPolicy.onNetwork(StrictMode.java:1190) 
    at java.net.InetAddress.lookupHostByName(InetAddress.java:394) 
    at java.net.InetAddress.getAllByNameImpl(InetAddress.java:245) 
    at java.net.InetAddress.getAllByName(InetAddress.java:220) 
    at com.mysql.jdbc.StandardSocketFactory.connect(StandardSocketFactory.java:249) 
    at com.mysql.jdbc.MysqlIO.<init>(MysqlIO.java:305) 
    at com.mysql.jdbc.ConnectionImpl.coreConnect(ConnectionImpl.java:2461) 
    at com.mysql.jdbc.ConnectionImpl.connectOneTryOnly(ConnectionImpl.java:2498) 

數據庫只顯示1個活動連接,所以我知道這是因爲太多打開的連接沒有。我嘗試重新啓動服務器,但它沒有幫助。我正在使用MySQL JDBC Connector/J版本5.1.23。工作的手機運行的是Android 2.3.5版本,無法運行的手機運行的是Android 4.0.4版本。有沒有人有任何想法可能是錯誤的?

謝謝!

回答

2
Caused by: android.os.NetworkOnMainThreadException 

您無法在主線程上執行網絡IO。將其移至AsyncTask或線程。

+0

啊,這很有道理。我太專注於MySQL/JDBC方面的事情,我甚至沒有把它看作是Android的問題。謝謝! – maximusprime21

相關問題