2012-03-03 211 views
0

我找不到指向此問題的鏈接。我已經搜索了使用MySQL的例子,我正在關注這些例子,但我仍然有這個問題。我正在使用GWT,並且我在另一臺主機上安裝了MySQL服務器。我希望在部署之前在本地工作。我能夠看到驅動程序爲Class.forName(「com.mysql.jdbc.Driver」)調用成功。問題是使用DriverManager.getConnection(url,username,password)獲取連接。我知道憑據是正確的。我得到的例外是:DriverManager.getConnection()爲MySql數據庫訪問拋出異常

java.sql.SQLException:java.lang.NoClassDefFoundError:java.net.Socket是一個受限制的類。有關更多詳細信息,請參閱Google App Engine開發人員指南。

根據其他例子,我沒有看到我在做什麼不同。這可能是因爲SQL服務器在不同的主機上?我已經使用IP地址設置了連接字符串,因此我不必執行查找:

private static final String url =「jdbc:mysql://xx.xx.xx.xx:3306/dbname」 ;

是的,我有一個有效的IP,我有XX的。如果我沒有在GWT中運行,此代碼正常工作。這可能是因爲我在另一臺主機上運行數據庫服務器?這是不允許的?

幫助表示讚賞

馬蒂

+0

Marty,你做的JDBC /休眠/無論在服務器端調用的地方?確保你不會試圖打電話給客戶。也許你可以分享更多的設置,如你的查詢代碼... – 2012-03-03 18:42:39

+0

不,我只是試圖連接到數據庫做一個查詢。這應該只需要Class.forName()調用和一個連接調用。由於我發佈了這個,我現在使用DriverManager.registerDriver(newAppEngineDriver());通過這個調用,我可以訪問在線SQL數據庫,但仍然會在本地數據庫中發生套接字錯誤。您要求我分享查詢代碼,我還沒有到那裏,我必須連接才能查詢。 – Marty 2012-03-03 23:44:07

回答

1

你的代碼是在谷歌App Engine上運行。你不能在GAE上使用MySQL。

Can I use a MySQL database with an App Engine application

+0

在App Engine的設置下有一個關於Google Cloud SQL的部分。在那裏,你可以選擇「使用MySQL實例」進行開發,這正是我想要做的。你是說爲了開發你不能使用本地數據庫嗎? – Marty 2012-03-04 19:34:03

+0

我相信你必須使用Google的特定MySQL。請注意「創建Google雲端sql實例」部分的要求:https://developers.google.com/cloud-sql/docs/before_you_begin – checketts 2012-03-05 23:03:07