我们在Eclipse中运行一个项目并使用Wildfly作为webserver。我们已经配置了wildfly并创建了一个可行的新mysql数据源。我们在Eclipse中为数据库创建了一个数据库和一个新的Connection,并使用Wildfly提供的url创建了实体。所以到目前为止一切都很好。
我们现在遇到的问题是,当我们运行应用程序并尝试持久化实体时,我们会收到一条错误,说明"由以下原因引起:org.h2.jdbc.JdbcSQLException:表" USER"未找到; SQL语句......"
在gooling之后我们发现我们必须改变standalone.xml并且这样做。
<datasource jta="false" jndi-name="java:jboss/fakebook" pool-name="mysql" enabled="true" use-ccm="false">
<connection-url>jdbc:mysql://localhost:3306/fakebook</connection-url>
<driver-class>com.mysql.jdbc.Driver</driver-class>
<driver>mysql</driver>
<security>
<user-name>root</user-name>
</security>
<validation>
<validate-on-match>false</validate-on-match>
<background-validation>false</background-validation>
</validation>
<statement>
<share-prepared-statements>false</share-prepared-statements>
</statement>
</datasource>
<drivers>
<driver name="com.mysql" module="mysql.mysql-connector-java">
<xa-datasource-class>com.mysql.jdbc.jdbc2.optional.MysqlXADataSource</xa-datasource-class>
</driver>
<driver name="mysql" module="org.mysql">
<driver-class>com.mysql.jdbc.Driver</driver-class>
</driver>
</drivers>
重新启动服务器但遇到同样的问题但同样的异常。当我们独立打开时,它已经变回默认值:
<driver name="h2" module="com.h2database.h2">
<xa-datasource-class>org.h2.jdbcx.JdbcDataSource</xa-datasource-class>
</driver>
<driver name="mysql" module="org.mysql">
<driver-class>com.mysql.jdbc.Driver</driver-class>
</driver>
答案 0 :(得分:1)
除了确保你的standalone.xml没有被覆盖之外(正如'&#39; shi&#39;所指出的那样)你还应该为wildfly添加一个MySQL模块:
<?xml version="1.0" encoding="UTF-8"?>
<module xmlns="urn:jboss:module:1.1" name="com.sql.mysql">
<resources>
<resource-root path="mysql-connector-java-5.0.4-bin.jar"/>
</resources>
<dependencies>
<module name="javax.api"/>
</dependencies>
</module>
使用的来源材料:some blog
答案 1 :(得分:0)
我认为您在standalone.xml更改之前没有关闭服务器。我对吗?停止服务器时,Wildfly将覆盖standalone.xml,因此您必须在更改配置文件之前停止服务器! 如果要编辑正在运行的服务器实例中的数据源定义并对其进行测试,则还可以使用命令行界面。
答案 2 :(得分:0)
在connection-url尝试放入此xml标记之后:
<connection-property name="DatabaseName">"name_of_database"</connection-property>
也许hibernate无法找到数据库。