我想从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
答案 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;,所以当我尝试本地服务器时不起作用。
非常感谢你的帮助。