您好我正在尝试通过以下代码建立从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 ,但在这种情况下可能是什么原因
由于
答案 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的端口,不是整个连接字符串。