update tutorial domain delete hibernate grails

tutorial - Errores Grails 2.4 e hibernate4 con ejecución-aplicación



grails html (3)

La solución @Luis proporcionada anteriormente también funciona para MYSQL. Simplemente extienda MySQL5InnoDBDialect en su lugar como se muestra a continuación:

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; } }

Luego, en su archivo de fuente de datos, cambie la siguiente línea:

dialect = org.hibernate.dialect.MySQL5InnoDBDialect

a

dialect = my.package.name.ImprovedMySQLDialect

Actualicé una aplicación a Grails 2.4.0 y estoy usando el complemento hibernate4. Al ejecutar la aplicación de ejecución, los siguientes ejemplos de error se generan para cada clase de dominio utilizando la base de datos en memoria. He leído varias publicaciones en los foros de hibernación de que los errores no son graves. Simplemente está registrando un error porque la tabla que está intentando eliminar aún no existe.

2014-Mai-24 13: 25: 26,788 ERROR [localhost-startStop-1] org.hibernate.tool.hbm2ddl.SchemaExport - SchemaExport.java 425 - HHH000389: No exitoso: alterar la tabla user_role drop constraint FK_apcc8lxk2xnug8377fatvbn04 si existe

2014-Mai-24 13: 25: 26,789 ERROR [localhost-startStop-1] org.hibernate.tool.hbm2ddl.SchemaExport - SchemaExport.java 426 - No se encontró la tabla "USER_ROLE"; Instrucción de SQL: alterar la restricción de caída user_role de la tabla FK_apcc8lxk2xnug8377fatvbn04 si existe [42102-173]

¿Alguien sabe cómo detener el ruido de registro?


Simplemente configure dbCreate="update" , y los errores desaparecerán inmediatamente.

El problema es que GORM (hibernación) está intentando eliminar tablas en el DB H2 que nunca se han creado porque el DB se crea nuevo cada vez que ejecuta la aplicación. Desafortunadamente, dbCreate está configurado para crear-soltar de forma predeterminada, lo que realmente no tiene sentido para una base de datos que se crea sobre la marcha en tiempo de ejecución.

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" }


Es un error, parece que puedes dejarlo así y no causará ningún problema, pero si no quieres ver el mensaje aquí hay algunas soluciones: (Editar: La opción 2 parece funcionar mejor (ver comentarios en esta publicación) )

1.- configuración singleSession de DataSource.groovy

https://jira.grails.org/browse/GRAILS-11198

2.- anulando el dialecto 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; } }

No exitoso: altere la restricción de caída de la tabla XXX YYY en Hibernate / JPA / HSQLDB independiente