我把一个应用升级到了Grails 2.4.0,我用的是hibernate4插件。执行run-app时,使用内存数据库为每个域类生成以下错误示例。我在hibernate论坛上看过几个帖子,这些错误并不严重。它只是记录一个错误,因为它试图删除的表尚不存在。
2014-Mai-24 13:25:26,788 错误 [本地主机启动停止-1] 组织.Hibernate.tool.hbm2ddl.模式导出 - 模式导出.java 425 - HHH000389:不成功:更改表user_role删除约束FK_apcc8lxk2xnug8377fatvbn04(如果存在)
2014-Mai-24 13:25:26,789 ERROR[localhost]org.hibernate.tool.hbm2ddl.SchemaExport-SchemaExport.java426-找不到表"USER_ROLE";SQL语句:更改表user_role删除约束FK_apcc8lxk2xnug8377fatvbn04如果存在[42102-173]
有人知道如何停止伐木噪音吗?
只需设置< code>dbCreate="update",错误就会立即消失。
问题是GORM(hibernate)试图删除H2数据库中从未创建过的表,因为每次运行应用程序时都会新建数据库。不幸的是,dbCreate默认设置为create-drop,这对于在运行时动态创建的数据库来说确实没有意义。
development {
dataSource {
dbCreate = "update" // one of 'create', 'create-drop', 'update', 'validate', ''
url = "jdbc:h2:mem:devDb;MVCC=TRUE;LOCK_TIMEOUT=10000;DB_CLOSE_ON_EXIT=FALSE"
}
上面提供的解决方案@Luis也适用于MYSQL。只需扩展MySQL5InnoDBDialect,如下所示:
import org.hibernate.dialect.MySQL5InnoDBDialect;
public class ImprovedMySQLDialect extends MySQL5InnoDBDialect {
@Override
public String getDropSequenceString(String sequenceName) {
// Adding the "if exists" clause to avoid warnings
return "drop sequence if exists " + sequenceName;
}
@Override
public boolean dropConstraints() {
// We don't need to drop constraints before dropping tables, that just leads to error
// messages about missing tables when we don't have a schema in the database
return false;
}
}
然后在您的数据源文件中更改以下行:
dialect = org.hibernate.dialect.MySQL5InnoDBDialect
到
dialect = my.package.name.ImprovedMySQLDialect
这是一个错误,似乎你可以这样做,不会造成任何问题,但如果你不想看到消息,这里有一些解决方案:(编辑:选项2似乎工作得更好(请参阅这篇文章中的评论))
1.-单会话配置从DataSource.groovy
https://jira.grails.org/browse/GRAILS-11198
2.- 覆盖 H2 方言:
public class ImprovedH2Dialect extends H2Dialect {
@Override
public String getDropSequenceString(String sequenceName) {
// Adding the "if exists" clause to avoid warnings
return "drop sequence if exists " + sequenceName;
}
@Override
public boolean dropConstraints() {
// We don't need to drop constraints before dropping tables, that just
// leads to error messages about missing tables when we don't have a
// schema in the database
return false;
}
}
不成功:在Hibernate/JPA/HSQLDB独立中更改表XXX删除约束YYY
问题内容: 我已经将应用程序升级到Grails 2.4.0,并且正在使用hibernate4插件。执行运行应用程序时,会使用内存数据库为每个域类生成以下错误示例。我已经在hibernate论坛上阅读了几则帖子,这些错误并不严重。它只是记录一个错误,因为它要删除的表尚不存在。 2014-Mai-24 13:25:26,788错误[localhost-startStop-1] org.hibernat
每当我尝试运行我的应用程序时,屏幕截图中的窗口就会弹出。声明找不到默认活动,因此我无法部署我的应用程序: 我的代码清单文件 这就是我点击运行时得到的窗口- 我的代码的Gradle文件:
我对Spring靴不熟悉。任何时候我运行我的Spring启动应用程序,我得到错误。需要帮助运行我的Spring启动应用程序。 错误信息:白标签错误页 此应用程序没有/error的显式映射,因此您将其视为回退。 2016年10月10日星期一10:39:54 WAT出现意外错误(类型=未找到,状态=404)。没有可用的消息 代码:
我看到了其他相关问题,但对解决方案不满意。 我已经根据我的要求对上面的教程做了我自己的修改,像使用城市,国家实体而不是学生。 我的beans.xml是这样的 和CountryJDBCTemplate.java如下所示: 2013年12月11日下午1:06:02 org.springframework.context.support.classpathxmlapplicationcontext准备r
错误如下: 02-11 13:24:31.561 526 2-5262/?E/AndroidRuntime:致命异常:main process:com.example.vicky.project,pid:5262 java.lang.runtimeException:无法启动活动ComponentInfo{com.example.vicky.project/com.example.vicky.pr
例如。 这应该运行一个简单的hello world应用程序,摘自oracle文档。然而,当我‘运行’这个代码,没有窗口打开。取而代之的是打开一个名为“Java”的应用程序。看起来'java'只是一个位于'jdk1.8.0_25.jdk/contents/home/bin'中的'UNIX可执行文件‘。应用程序'java'绝对不显示任何东西,并且在没有强制退出的情况下无法关闭。 我在MacBook上运