Hibernate数据库名称更改给出了MySQLSyntaxErrorException:表不存在

时间:2012-02-22 11:21:06

标签: java mysql hibernate

我曾经有一个名为database的数据库,并且使用hibernate及其模型一切运行良好。

我删除<property name="hibernate.hbm2ddl.auto">以避免更新或创建,因为它是生产服务器,我们希望手动执行。

我们最近切换到database2,因此我们切换了hibernate配置文件和所有hibernate XML模型。

`<class name="com.api.models.database.MmApplications" table="mm_applications" catalog="database2">`

但如果我们迁移数据库,模型和连接,它会一直在寻找database事件。

 Caused by: com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException: Table 'database.mm_applications' doesn't exist

有人可以帮助我吗?

更新----

Hibernate正在连接到正确的数据库(database2),但前缀为database.,使得查询命中database而不是database2,当我尝试强制default_schema我的查询变为:

`... from database.database2.mm_applications ....`

有什么想法吗?

2 个答案:

答案 0 :(得分:1)

我的数据库在hibernate.connection.url属性中指定。你也改变了吗?一个例子是:jdbc:mysql://localhost/mydatabase

此外,您可以将其值设置为hibernate.hbm2ddl.auto,而不是删除validate。这样,hibernate将确保数据模型与数据库模式匹配。

答案 1 :(得分:0)

我发现了问题,这是使用hibernate在同一个tomcat服务器上部署的另一个应用程序以及另一个与新应用程序发生冲突的数据库(database ... ...

还有一些奇怪的东西,通过连接到任何数据库,hibernate将使用hibernate模型中的指定目录,因此使用catalog.table_name构建请求

希望有一天能帮助别人。