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

问题描述:

我想从Java Web应用程序连接到名为“libros”的数据库,但是当我尝试从内部服务器(我使用STS 3.6.1)运行应用程序时,我得到以下错误:与MySQL 5.6本地服务器连接失败

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工作台。澄清MySQL服务器是本地的,以及应用程序。

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

我连接到最新的MySQL JDBC连接器,也试过其他以前的版本,但问题是一样的。

当然,我感谢您的关注。

古斯塔沃·埃切尼克

+0

异常并不是说没有“libros”表,但没有libros数据库。这将有助于显示com.arquitecturajava.DataBaseHelper.seleccionarRegistros(DataBaseHelper.java:92)。 – 2014-10-09 22:51:59

你得到 “MySQLSyntaxErrorException:未知数据库 'libros'”。

你最初说的libros是一个数据库;但是在稍后的语句中将其称为表 - 检查您是否尚未创建名为libros的表,而不是数据库。这是这类错误的一个潜在原因。

如需进一步的帮助,请提供使用的create语句以及sql查询。

确保您连接到正确的主机和您连接到MySQL主机具有“libros”数据库。

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

试试这个命令:

SHOW GRANTS FOR 'user'@'localhost'; 

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

该数据库名为“arquitecturajava”,并有一个名为“libros”的表。

当我在线测试MySQL时,我将数据库称为“libros”,所以当我尝试使用本地服务器时无法正常工作。

非常感谢您的帮助。