首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >我如何摆脱"MySQLSyntaxErrorException“

我如何摆脱"MySQLSyntaxErrorException“
EN

Stack Overflow用户
提问于 2015-07-10 07:26:04
回答 2查看 6.9K关注 0票数 3

我目前正在使用hibernate构建一个基于web的小型工具。我使用TomcatV7.0服务器在eclipse中测试站点。我的数据库在Linux上使用MySQL版本5.6。

现在,每当我在服务器上启动我的index.xhtml程序时,我都会收到一条惊人的错误消息,如下所示:

代码语言:javascript
复制
ERROR: HHH000300: Could not complete schema validation
com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException: Unknown table 'system_sequences' in information_schema
    at sun.reflect.GeneratedConstructorAccessor48.newInstance(Unknown Source)
    at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
    at java.lang.reflect.Constructor.newInstance(Constructor.java:422)
    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.sendCommand(MysqlIO.java:2435)
    at com.mysql.jdbc.MysqlIO.sqlQueryDirect(MysqlIO.java:2582)
    at com.mysql.jdbc.ConnectionImpl.execSQL(ConnectionImpl.java:2526)
    at com.mysql.jdbc.ConnectionImpl.execSQL(ConnectionImpl.java:2484)
    at com.mysql.jdbc.StatementImpl.executeQuery(StatementImpl.java:1446)
    at org.hibernate.tool.hbm2ddl.DatabaseMetadata.initSequences(DatabaseMetadata.java:178)
    at org.hibernate.tool.hbm2ddl.DatabaseMetadata.<init>(DatabaseMetadata.java:92)
    at org.hibernate.tool.hbm2ddl.SchemaValidator.validate(SchemaValidator.java:168)
    at org.hibernate.internal.SessionFactoryImpl.<init>(SessionFactoryImpl.java:525)
    at org.hibernate.cfg.Configuration.buildSessionFactory(Configuration.java:1859)
    at org.hibernate.cfg.Configuration.buildSessionFactory(Configuration.java:1930)
    at com.ubs.tbt.database.KurseDAO.getModule(KurseDAO.java:139)
    at com.ubs.tbt.database.Klasse.module(Klasse.java:59)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.lang.reflect.Method.invoke(Method.java:497)
    at javax.el.BeanELResolver.invoke(BeanELResolver.java:165)
    at javax.el.CompositeELResolver.invoke(CompositeELResolver.java:84)
    at org.apache.el.parser.AstValue.getValue(AstValue.java:159)
    at org.apache.el.ValueExpressionImpl.getValue(ValueExpressionImpl.java:184)
    at com.sun.faces.facelets.el.TagValueExpression.getValue(TagValueExpression.java:109)
    at com.sun.faces.facelets.component.UIRepeat.getValue(UIRepeat.java:274)
    at com.sun.faces.facelets.component.UIRepeat.getDataModel(UIRepeat.java:250)
    at com.sun.faces.facelets.component.UIRepeat.setIndex(UIRepeat.java:444)
    at com.sun.faces.facelets.component.UIRepeat.doVisitChildren(UIRepeat.java:679)
    at com.sun.faces.facelets.component.UIRepeat.visitTree(UIRepeat.java:637)
    at javax.faces.component.UIComponent.visitTree(UIComponent.java:1700)
    at javax.faces.component.UIForm.visitTree(UIForm.java:371)
    at javax.faces.component.UIComponent.visitTree(UIComponent.java:1700)
    at javax.faces.component.UIComponent.visitTree(UIComponent.java:1700)
    at org.primefaces.component.api.UITabPanel.visitTree(UITabPanel.java:920)
    at com.sun.faces.facelets.component.UIRepeat.visitTree(UIRepeat.java:643)
    at javax.faces.component.UIComponent.visitTree(UIComponent.java:1700)
    at javax.faces.component.UIComponent.visitTree(UIComponent.java:1700)
    at com.sun.faces.application.view.FaceletPartialStateManagementStrategy.saveView(FaceletPartialStateManagementStrategy.java:472)
    at com.sun.faces.application.StateManagerImpl.saveView(StateManagerImpl.java:89)
    at javax.faces.application.StateManager.getViewState(StateManager.java:593)
    at com.sun.faces.context.PartialViewContextImpl.renderState(PartialViewContextImpl.java:454)
    at com.sun.faces.context.PartialViewContextImpl.processPartial(PartialViewContextImpl.java:322)
    at org.primefaces.context.PrimePartialViewContext.processPartial(PrimePartialViewContext.java:60)
    at javax.faces.component.UIViewRoot.encodeChildren(UIViewRoot.java:1004)
    at javax.faces.component.UIComponent.encodeAll(UIComponent.java:1856)
    at com.sun.faces.application.view.FaceletViewHandlingStrategy.renderView(FaceletViewHandlingStrategy.java:417)
    at com.sun.faces.application.view.MultiViewHandler.renderView(MultiViewHandler.java:131)
    at com.sun.faces.lifecycle.RenderResponsePhase.execute(RenderResponsePhase.java:120)
    at com.sun.faces.lifecycle.Phase.doPhase(Phase.java:101)
    at com.sun.faces.lifecycle.LifecycleImpl.render(LifecycleImpl.java:219)
    at javax.faces.webapp.FacesServlet.service(FacesServlet.java:647)
    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:502)
    at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:142)
    at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:79)
    at org.apache.catalina.valves.AbstractAccessLogValve.invoke(AbstractAccessLogValve.java:617)
    at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:88)
    at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:518)
    at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1091)
    at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:668)
    at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1521)
    at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.run(NioEndpoint.java:1478)
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
    at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)
    at java.lang.Thread.run(Thread.java:745)

我的hibernate.cfg

代码语言:javascript
复制
<?xml version='1.0'?>
<!DOCTYPE hibernate-configuration PUBLIC
        "-//Hibernate/Hibernate Configuration DTD 3.0//EN"
        "http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd">
<hibernate-configuration>
    <session-factory>

        <property name="connection.driver_class">com.mysql.jdbc.Driver</property>
        <property name="connection.url">jdbc:mysql://192.168.1.34:3306/BeurteilungsDB</property>
        <property name="connection.username">admin</property>
        <property name="connection.password">po2015</property>

        <!-- Zusaetzliche Hibernate-Properties -->
        <property name="hibernate.dialect">org.hibernate.dialect.HSQLDialect</property>
        <property name="hibernate.format_sql">true</property>
        <property name="hibernate.current_session_context_class">thread</property>

        <property name="hibernate.hbm2ddl.auto">validate</property>

        <!-- Definition der gemappten Klassen -->

    <!--    <mapping class="ch.fg.bibliothek.Verlag" />-->
        <mapping class="com.ubs.tbt.database.Eventbewertung" />
        <mapping class="com.ubs.tbt.database.Modulbewertung" />
        <mapping class="com.ubs.tbt.database.Teilnehmer" />
        <mapping class="com.ubs.tbt.database.Klasse" />
        <mapping class="com.ubs.tbt.database.Firma" />
        <mapping class="com.ubs.tbt.database.Kursleiter" />
        <mapping class="com.ubs.tbt.database.Module" />
        <mapping class="com.ubs.tbt.database.Kurse" />

    </session-factory>


</hibernate-configuration>

程序本身正常运行,工作方式正常,但当这条消息在控制台中每秒钟打印一次时,我很难验证控制台输出的其余部分。

值得一提的是,在<property name="hibernate.hbm2ddl.auto">validate</property>中添加关键字<property name="hibernate.hbm2ddl.auto">validate</property>之后,我开始收到这条消息。

这张桌子应该在哪里,最重要的是,我该如何处理掉这条信息?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2015-07-10 07:40:21

首先,您需要了解到ddl、hbm2ddl.auto设置的hibernate映射。

从docs hibernate.hbm2ddl.auto

在创建SessionFactory时自动验证或导出架构DDL到数据库。使用create,当SessionFactory显式关闭时,数据库模式将被删除.,例如,验证\ update、update、create、create

validate:验证架构,不更改数据库。

update:更新架构。

create:创建架构,销毁以前的数据。

create-drop:在会话结束时删除架构。

您的配置无法验证架构,因为它找不到information_schema.system_sequences。我想是因为你选择的方言。

尝试用org.hibernate.dialect.HSQLDialect替换org.hibernate.dialect.MySQLDialect

查看doc以选择正确的方言,并验证配置的其余部分。

MySQL hibernate方言:

代码语言:javascript
复制
MySQL               org.hibernate.dialect.MySQLDialect
MySQL with InnoDB   org.hibernate.dialect.MySQLInnoDBDialect
MySQL with MyISAM   org.hibernate.dialect.MySQLMyISAMDialect

information_schema是MySQL自己的信息数据库。它包含有关在其数据库服务器中维护的所有其他(您自己的)数据库的所有信息。

票数 6
EN

Stack Overflow用户

发布于 2019-10-28 14:06:04

org.hibernate.dialect.HSQLDialect更改为org.hibernate.dialect.MySQLDialect。在您的application.properties中,您应该让spring.jpa.database-platform=org.hibernate.dialect.MySQLDialect与MySQL连接器8一起工作。

票数 -1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/31334917

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档