2013-05-20 36 views
0

您好我想從我的Java到SQL工作平臺建立連接值以下的代碼 -非法連接的端口值「MySQL的」無法通過獲取從數據庫

MysqlDataSource dataSource = new MysqlDataSource(); 
     dataSource.setServerName("jdbc:mysql://localhost:XXXX/Recommendation1") 
     dataSource.setUser("root"); 
     dataSource.setPassword("XXXXXXXX"); 
     dataSource.setDatabaseName("Recommendation1"); 
     JDBCDataModel dataModel = new MySQLJDBCDataModel(dataSource); 

我也包括了mysql-連接器的Java-5.0.8-bin.jar在我的lib目錄還是我收到以下錯誤

org.apache.mahout.cf.taste.common.TasteException: java.sql.SQLException: Illegal connection port value 'mysql:' 
    at org.apache.mahout.cf.taste.impl.model.jdbc.AbstractJDBCDataModel.getNumThings(AbstractJDBCDataModel.java:596) 
    at org.apache.mahout.cf.taste.impl.model.jdbc.AbstractJDBCDataModel.getNumItems(AbstractJDBCDataModel.java:552) 
    at org.apache.mahout.cf.taste.impl.recommender.slopeone.MemoryDiffStorage.<init>(MemoryDiffStorage.java:89) 
    at org.apache.mahout.cf.taste.impl.recommender.slopeone.SlopeOneRecommender.<init>(SlopeOneRecommender.java:69) 
    at com.HelloServlet1.doPost(HelloServlet1.java:70) 
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:637) 
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:717) 
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290) 
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206) 
    at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:233) 
    at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191) 
    at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:127) 
    at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:103) 
    at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109) 
    at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:293) 
    at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:861) 
    at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:606) 
    at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:489) 
    at java.lang.Thread.run(Thread.java:679) 

主要是爲錯誤的原因是不列入使用mysql-connector-java的5.0.8斌.jar在項目 的lib目錄中,但在這種情況下可能是reaso ñ

感謝

+0

我懷疑這個錯誤是否是因爲沒有在類路徑中的mysql連接,如果它沒有在那裏,你會收到,類似於MysqlDataSource的NoClassDefFounError –

回答

1

這看起來像一個配置問題。這裏有一個例子:

ds.setServerName("localhost"); 
    ds.setPortNumber(3306); 
    ds.setDatabaseName("testdb"); 
    ds.setUser("scott"); 
    ds.setPassword("tiger"); 
0

既然你已經在這裏設置數據庫名稱

dataSource.setDatabaseName("Recommendation1"); 

無需在服務器名稱

dataSource.setServerName("jdbc:mysql://localhost:XXXX/Recommendation1") 

所以將其指定,並期待在異常的,它假設字符串'mysql'(因爲它的後面的:字符在jdbc之後)在server-name中成爲一個端口。你可以試試這個嗎?

dataSource.setServerName("localhost:XXXX"); 
0

您是否確實需要設置數據庫名稱,因爲您似乎已將它存儲在jdbc連接URL中。

是否需要?

dataSource.setDatabaseName("Recommendation1"); 

當你在這裏DBNAME

dataSource.setServerName("jdbc:mysql://localhost:XXXX/Recommendation1") 
0

您應該使用

dataSource.setServerName("localhost:3306"); //Default port for MySQL 

而是採用

dataSource.setServerName("jdbc:mysql://localhost:XXXX/Recommendation1"); 

因爲,在setServerName方法需要只有服務器的名稱與端口一起運行MySQL的不是整個連接字符串