与MySQL 5.6本地服务器的连接失败

时间:2014-10-09 22:46:37

标签: java mysql jdbc

我想从Java Web应用程序连接到名为“libros”的数据库,但是当我尝试从内部服务器运行应用程序时(我使用的是STS 3.6.1),我收到以下错误:< / p>

oct 09, 2014 7:31:41 PM org.apache.catalina.core.StandardWrapperValve invoke
GRAVE: Servlet.service() para servlet ControladorLibros lanzó excepción
com.arquitecturajava.DataBaseException: Error de SQL
    at com.arquitecturajava.DataBaseHelper.seleccionarRegistros(DataBaseHelper.java:138)
    at com.arquitecturajava.Libro.buscarTodos(Libro.java:101)
    at com.arquitecturajava.ControladorLibros.doGet(ControladorLibros.java:29)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:618)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:725)
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:291)
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
    at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:239)
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
    at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:219)
    at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:106)
    at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:503)
    at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:136)
    at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:79)
    at org.apache.catalina.valves.AbstractAccessLogValve.invoke(AbstractAccessLogValve.java:610)
    at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:88)
    at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:526)
    at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1078)
    at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:655)
    at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:146)
    at org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:279)
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
    at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)
    at java.lang.Thread.run(Thread.java:745)
Caused by: com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException: Unknown database 'libros'
    at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
    at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:57)
    at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
    at java.lang.reflect.Constructor.newInstance(Constructor.java:526)
    at com.mysql.jdbc.Util.handleNewInstance(Util.java:377)
    at com.mysql.jdbc.Util.getInstance(Util.java:360)
    at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:978)
    at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:3887)
    at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:3823)
    at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:870)
    at com.mysql.jdbc.MysqlIO.proceedHandshakeWithPluggableAuthentication(MysqlIO.java:1659)
    at com.mysql.jdbc.MysqlIO.doHandshake(MysqlIO.java:1206)
    at com.mysql.jdbc.ConnectionImpl.coreConnect(ConnectionImpl.java:2234)
    at com.mysql.jdbc.ConnectionImpl.connectOneTryOnly(ConnectionImpl.java:2265)
    at com.mysql.jdbc.ConnectionImpl.createNewIO(ConnectionImpl.java:2064)
    at com.mysql.jdbc.ConnectionImpl.<init>(ConnectionImpl.java:790)
    at com.mysql.jdbc.JDBC4Connection.<init>(JDBC4Connection.java:44)
    at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
    at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:57)
    at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
    at java.lang.reflect.Constructor.newInstance(Constructor.java:526)
    at com.mysql.jdbc.Util.handleNewInstance(Util.java:377)
    at com.mysql.jdbc.ConnectionImpl.getInstance(ConnectionImpl.java:395)
    at com.mysql.jdbc.NonRegisteringDriver.connect(NonRegisteringDriver.java:325)
    at java.sql.DriverManager.getConnection(DriverManager.java:571)
    at java.sql.DriverManager.getConnection(DriverManager.java:215)
    at com.arquitecturajava.DataBaseHelper.seleccionarRegistros(DataBaseHelper.java:92)
    ... 25 more

我知道有“libros”表,因为我自己创建并查阅MySQL Workbench。澄清说MySQL服务器是本地的,以及应用程序。

此外,最奇怪的是,如果我将同一个应用程序连接到在线MySQL,则不会显示错误。

我正在连接到最新的MySQL JDBC连接器,并尝试了其他以前的版本,但问题是一样的。

当然,我感谢你的关注。

Gustavo Echenique

3 个答案:

答案 0 :(得分:0)

确保您连接到正确的主机,并且您要连接的MySQL主机具有&#39; libros&#39;数据库中。

另外,检查您在JDBC配置中使用的用户是否可以访问&#39; libros&#39;数据库中。

尝试此命令:

SHOW GRANTS FOR 'user'@'localhost';

答案 1 :(得分:0)

你正在&#34; MySQLSyntaxErrorException:未知的数据库&#39; libros&#39; &#34;

你最初说libros是一个数据库;但在后来的一个声明中称之为表 - 检查您是否创建了一个名为libros的表,而不是数据库。这是造成此类错误的一个潜在原因。

要获得进一步的帮助,请提供所使用的create语句以及sql查询。

答案 2 :(得分:0)

我被迫为失去他们的时间道歉。

数据库被称为&#34; arquitecturajava&#34;并有一个名为&#34; libros&#34;。

的表

当我在线测试MySQL时,我将数据库称为&#34; libros&#34;,所以当我尝试本地服务器时不起作用。

非常感谢你的帮助。