非法连接端口值'mysql'无法从数据库中获取值

时间:2013-05-20 06:45:20

标签: java mysql database mysql-workbench

您好我正在尝试通过以下代码建立从java到SQL工作台的连接 -

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);

我还在我的lib目录中包含mysql-connector-java-5.0.8-bin.jar仍然出现以下错误

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)

主要是错误的原因是在项目的lib目录中没有包含mysql-connector-java-5.0.8-bin.jar ,但在这种情况下可能是什么原因

由于

4 个答案:

答案 0 :(得分:1)

这看起来像配置问题。以下是一个示例配置:

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

答案 1 :(得分:0)

由于您已在此处设置数据库名称

dataSource.setDatabaseName("Recommendation1");

无需在服务器名称

中指定它
dataSource.setServerName("jdbc:mysql://localhost:XXXX/Recommendation1")

因此,在查看异常时,它将服务器名称中的字符串'mysql'(因为它跟在: jdbc后面的dataSource.setServerName("localhost:XXXX"); 字符串)作为端口。你能试试吗?

{{1}}

答案 2 :(得分:0)

您是否真的需要设置数据库名称,因为您似乎已在jdbc连接URL中使用它。

是否需要?

dataSource.setDatabaseName("Recommendation1");

当你在这里有dbname时

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

答案 3 :(得分:0)

你应该使用

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

而不是使用

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

因为,setServerName方法只需要服务器的名称以及运行MySQL的端口不是整个连接字符串