当前位置: 首页 > 知识库问答 >
问题:

org.h2.jdbc.jdbcsqlException:找不到架构“DBO”

邓英卓
2023-03-14

这是Wildfly10.0中Hibernate版本不匹配的后续问题。

<?xml version="1.0" encoding="utf-8"?>

<persistence xmlns="http://java.sun.com/xml/ns/persistence"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://java.sun.com/xml/ns/persistence http://java.sun.com/xml/ns/persistence/persistence_2_0.xsd"
    version="2.0">

    <persistence-unit name="app" transaction-type="RESOURCE_LOCAL">

        <class>data.entities.Anything</class>
        <class>data.entities.Something</class>

        <properties>
            <property name="javax.persistence.jdbc.driver" value="com.microsoft.sqlserver.jdbc.SQLServerDriver"></property>
            <property name="javax.persistence.jdbc.url" value="jdbc:sqlserver://localhost;databaseName=AppDb"></property>
            <property name="javax.persistence.jdbc.user" value="****"></property>
            <property name="javax.persistence.jdbc.password" value="****"></property>
            <property name="hibernate.default_schema" value="dbo"></property>           
            <property name="hibernate.dialect" value="org.hibernate.dialect.SQLServer2008Dialect"></property>
            <property name="hibernate.hbm2ddl.auto" value="update"></property>
            <property name="jboss.as.jpa.providerModule" value="org.hibernate:5.2.4.Final" />
        </properties>
    </persistence-unit>
</persistence>

[org.jboss.as.server.deployment](MSC服务线程1-8)WFLYSRV0027:开始部署“webapi.war”(运行时名称:“webapi.war”)

[org.jboss.as.jpa](MSC服务线程1-1)WFlyJPA0002:为应用程序读取persistence.xml

[org.jboss.as.jpa](ServerService线程池--67)WFlyJPA0010:启动持久性单元(2的阶段1)服务'webapi.war#app'

[org.hibernate.jpa.internal.util.loghelper](ServerService线程池--67)HHH000204:处理PersistenceUnitInfo[name:app...]

[org.hibernate.orm.deprecation](ServerService线程池--67)HHH90000001:发现了指定扫描器[hibernate.ejb.resource_scanner]的不推荐设置的用法;改用[hibernate.archive.scanner]

[org.jboss.as.connector.deployers.jdbc](MSC服务线程1-1)WFlyJCA0004:部署符合JDBC的驱动程序类com.microsoft.sqlserver.jdbc.sqlserverdriver(版本6.0)

[org.jboss.as.connector.deployers.jdbc](MSC服务线程1-6)WFLYJCA0018:启动驱动程序服务,其驱动程序名称=webapi.war_com.microsoft.sqlserver.jdbc.sqlserverdriver_6_0

[org.jboss.as.jpa](ServerService线程池--67)WFlyJPA0010:启动持久性单元(2的阶段2)服务'webapi.war#app'

[org.hibernate.dialt.dialog](ServerService线程池--67)HHH000400:使用方言:org.hibernate.dialct.sqlserver2008dialogue

[org.hibernate.Envers.boot.internal.enversServiceImpl](ServerService线程池--67)启用Envers集成?:真的

原因:org.h2.jdbc.jdbcsqlexception:找不到架构“DBO”;SQL语句:在org.h2.message.dbexception.getjdbcsqlexception(dbexception.java:331)在org.h2.message.dbexception.get(dbexception.java:171)在org.h2.message.dbexception.get(dbexception.java:148)在org.h2.message.dbexception.getschema(parser.java:616)在org.h2.command.parser.getschema(parser.java:623)在java:5302)在org.h2.command.parser.parsecreat(parser.java:3873)在org.h2.command.parser.parse(Parser.java:324)在org.h2.command.parser.parse(Parser.java:279)在org.h2.command.parser.parse(Parser.java:251)在org.h2.command.parser.carse(Parser.java:251)在org.h2.command.parser.carse(Parser.java:218)在cconnection.java:1138)位于org.h2.jdbc.jdbcstatement.executeinternal(jdbcstatement.javA:168)在org.h2.jdbc.jdbcstatement.execute(jdbcstatement.java:156)在org.jboss.jca.adapters.jdbc.wrappdstatement.execute(wrappdstatement.java:198)在org.hibernate.tool.schema.internal.exec.generationTargetTodatabase.accept(GenerationTargetTodatabase.java:54)...20多个

无论如何,这是可以纠正的吗?

更新:我想,它无法连接数据库。当使用hibernate.hbm2ddl.auto作为validate而不是update时,会出现以下错误:

schemaManagementException:模式验证:缺少表[dbo.anythings]

<?xml version="1.0" encoding="UTF-8"?>
<!-- JDBC Drivers module.xml file to configure your JDBC drivers-->

<module xmlns="urn:jboss:module:1.3" name="com.microsoft.sqlserver" slot="main">
  <resources>
    <resource-root path="sqljdbc42.jar"/>
  </resources>
  <dependencies>
    <module name="javax.api"/>
    <module name="javax.transaction.api"/>
  </dependencies>
</module>
<subsystem xmlns="urn:jboss:domain:ee:4.0">
    <global-modules>
        <module name="com.microsoft.sqlserver" slot="main"/>
    </global-modules>
...
</subsystem>

然而,这些都不起作用。

共有1个答案

颜森
2023-03-14

它似乎是由您如何指定DB连接的方式引起的。在EE环境中,应该使用数据源定义,在persistence.xml中指定为jta-data-sourcenon-jta-data-source。正如JPA2.1规范(Ch.8.2.1.5)中所述,如果您没有指定其中任何一个,您的wildfly将使用其默认的数据源--名为ExampleDS--部署应用程序,该数据源使用h2内存中的DB。通过属性(javax.persistence.jdbc.url等)的连接参数被忽略,因为它们是针对Java SE环境而不是Java EE的。
您需要向wildfly配置添加一个新的数据源定义(standalone.xml或domain.xml,这取决于您的设置),或者在应用程序中以 -ds.xml 文件的形式提供数据源定义,该文件名为 位于WEB-INF文件夹中。在这两种情况下,都需要正确设置MSSQL驱动程序(部署到模块,添加module.xml并将驱动程序定义添加到widlfly config/subsytem=datasources)。这些操作也可以通过jboss-cli接口完成,以避免手动编辑配置文件。之后,从persistence.xml中删除连接属性,并使用新创建的DS的jndi名称添加jta/non-jta-data-source元素。另外,请删除mssql模块的全局定义

以下链接可能对您有用:Wildfly Hibernate+In app datasource definition
JBoss DB Driver+data source definition via cli

希望能有所帮助。

 类似资料:
  • 我正在尝试使用嵌入式h2 db运行我的应用程序。 我得到以下错误: 我已经试过了: 从. m2本地文件夹中删除h2存储库并重新导入并重新安装-未成功。 我还尝试使用以下内容配置属性文件: spring.datasource.driver类 Spring数据源。url=jdbc:h2:mem:testdb Springjpa。冬眠ddl auto=create spring.jpa.show-sql

  • org.h2.jdbc.JdbcSQLException:未找到函数"TO_CHAR";SQL声明:我使用的是oracle 12c数据库和spr java框架。但是这个问题与oracle数据库有关。这是sql查询。 如何修复此错误?请帮帮我。谢谢这是我的密码。 这是getConnection函数。 这是AbstractDao。Java语言

  • 就我所知,我认为这与@id注释的H2解释有关,但不明白为什么,所以任何帮助都将不胜感激... NB-我已经搜索堆栈溢出相当广泛,包括有关使用双引号列规范的问题,但不要认为这与我的情况有关... 表 和从SP调用返回默认结果的测试类: 测试类

  • 我有webapplication和h2database作为docker容器。我有docker组合yml文件所有设置。现在,我需要初始化这个数据库(h2database)。但我做不到。当我进入h2database docker容器时,我看到docker-entrypoint-initdb.d/initdb.sh在这个initdb.sh中添加了我的脚本 现在,当我运行docker-compose命令时

  • 我有Kafka的以下配置 我试图通过版本得到主题,我得到如下 我使用插件<;代码>;avro-maven插件>;生成>;CreateBankAccount>;代码< 然后,我用一个字符串键和一个avro序列化的有效负载向主题推送一条消息,但是我有一个错误 轨道: ProducerConfig值: KafkaAvroSerializerConfig值: