0

您好我正在尝试通过以下代码建立从我的 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

4 回答 4

1

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

  ds.setServerName("localhost");
  ds.setPortNumber(3306);
  ds.setDatabaseName("testdb");
  ds.setUser("scott");
  ds.setPassword("tiger");
于 2013-05-20T06:54:57.130 回答
0

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

dataSource.setDatabaseName("Recommendation1");

无需在服务器名称中指定

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

因此,查看异常,它假设服务器名称中的字符串'mysql'(因为它在:char 之后jdbc)是一个端口。你能试试这个吗?

dataSource.setServerName("localhost:XXXX");
于 2013-05-20T06:52:45.213 回答
0

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

是必需的吗?

dataSource.setDatabaseName("Recommendation1");

当你在这里有 dbname

dataSource.setServerName("jdbc:mysql://localhost:XXXX/Recommendation1")
于 2013-05-20T06:53:09.030 回答
0

你应该使用

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

而不是使用

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

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

于 2013-05-20T07:03:29.077 回答