Erro ao clicar botão gravar

Ao clicar no botão gravar ocorreu o erro logo abaixo, alguem sabe o que é esse erro e o que devo fazer?

TopLink Warning]: 2010.08.10 03:40:47.571–UnitOfWork(20570961)–Exception [TOPLINK-4002] (Oracle TopLink Essentials - 2.0.1 (Build b09d-fcs (12/06/2007))): oracle.toplink.essentials.exceptions.DatabaseException
Internal Exception: com.mysql.jdbc.exceptions.jdbc4.MySQLIntegrityConstraintViolationException: Cannot add or update a child row: a foreign key constraint fails (dbpk.ensaio, CONSTRAINT fk_ensaio_equipamento1 FOREIGN KEY (equipamento_posicao_equipamento) REFERENCES equipamento (posicao_equipamento) ON DELETE NO ACTION ON UPDATE NO ACTION)
Error Code: 1452
Call: INSERT INTO dbpk.ensaio (tipo_manut_ensaio, usuario_idusuario, data_ensaio, instrumento_idinstrumento, equipamento_posicao_equipamento, fase_ensaio) VALUES (?, ?, ?, ?, ?, ?)
bind => [mcc, 1, null, 1, 1, a]
Query: InsertObjectQuery(br.com.sispk.view.Ensaio[idensaio=null])
javax.persistence.RollbackException: Exception [TOPLINK-4002] (Oracle TopLink Essentials - 2.0.1 (Build b09d-fcs (12/06/2007))): oracle.toplink.essentials.exceptions.DatabaseException
Internal Exception: com.mysql.jdbc.exceptions.jdbc4.MySQLIntegrityConstraintViolationException: Cannot add or update a child row: a foreign key constraint fails (dbpk.ensaio, CONSTRAINT fk_ensaio_equipamento1 FOREIGN KEY (equipamento_posicao_equipamento) REFERENCES equipamento (posicao_equipamento) ON DELETE NO ACTION ON UPDATE NO ACTION)
Error Code: 1452
Call: INSERT INTO dbpk.ensaio (tipo_manut_ensaio, usuario_idusuario, data_ensaio, instrumento_idinstrumento, equipamento_posicao_equipamento, fase_ensaio) VALUES (?, ?, ?, ?, ?, ?)
bind => [mcc, 1, null, 1, 1, a]
Query: InsertObjectQuery(br.com.sispk.view.Ensaio[idensaio=null])
at oracle.toplink.essentials.internal.ejb.cmp3.transaction.base.EntityTransactionImpl.commit(EntityTransactionImpl.java:120)
at oracle.toplink.essentials.internal.ejb.cmp3.transaction.EntityTransactionImpl.commit(EntityTransactionImpl.java:60)
at br.com.sispk.view.EnsaioPk6a.saveButtonActionPerformed(EnsaioPk6a.java:383)
at br.com.sispk.view.EnsaioPk6a.access$500(EnsaioPk6a.java:29)
at br.com.sispk.view.EnsaioPk6a$FormListener.actionPerformed(EnsaioPk6a.java:295)
at javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:2012)
at javax.swing.AbstractButton$Handler.actionPerformed(AbstractButton.java:2335)
at javax.swing.DefaultButtonModel.fireActionPerformed(DefaultButtonModel.java:404)
at javax.swing.DefaultButtonModel.setPressed(DefaultButtonModel.java:259)
at javax.swing.plaf.basic.BasicButtonListener.mouseReleased(BasicButtonListener.java:253)
at java.awt.Component.processMouseEvent(Component.java:6108)
at javax.swing.JComponent.processMouseEvent(JComponent.java:3267)
at java.awt.Component.processEvent(Component.java:5873)
at java.awt.Container.processEvent(Container.java:2105)
at java.awt.Component.dispatchEventImpl(Component.java:4469)
at java.awt.Container.dispatchEventImpl(Container.java:2163)
at java.awt.Component.dispatchEvent(Component.java:4295)
at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4461)
at java.awt.LightweightDispatcher.processMouseEvent(Container.java:4125)
at java.awt.LightweightDispatcher.dispatchEvent(Container.java:4055)
at java.awt.Container.dispatchEventImpl(Container.java:2149)
at java.awt.Window.dispatchEventImpl(Window.java:2478)
at java.awt.Component.dispatchEvent(Component.java:4295)
at java.awt.EventQueue.dispatchEvent(EventQueue.java:604)
at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:275)
at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:200)
at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:190)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:185)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:177)
at java.awt.EventDispatchThread.run(EventDispatchThread.java:138)
Caused by: Exception [TOPLINK-4002] (Oracle TopLink Essentials - 2.0.1 (Build b09d-fcs (12/06/2007))): oracle.toplink.essentials.exceptions.DatabaseException
Internal Exception: com.mysql.jdbc.exceptions.jdbc4.MySQLIntegrityConstraintViolationException: Cannot add or update a child row: a foreign key constraint fails (dbpk.ensaio, CONSTRAINT fk_ensaio_equipamento1 FOREIGN KEY (equipamento_posicao_equipamento) REFERENCES equipamento (posicao_equipamento) ON DELETE NO ACTION ON UPDATE NO ACTION)
Error Code: 1452
Call: INSERT INTO dbpk.ensaio (tipo_manut_ensaio, usuario_idusuario, data_ensaio, instrumento_idinstrumento, equipamento_posicao_equipamento, fase_ensaio) VALUES (?, ?, ?, ?, ?, ?)
bind => [mcc, 1, null, 1, 1, a]
Query: InsertObjectQuery(br.com.sispk.view.Ensaio[idensaio=null])
at oracle.toplink.essentials.exceptions.DatabaseException.sqlException(DatabaseException.java:311)
at oracle.toplink.essentials.internal.databaseaccess.DatabaseAccessor.executeDirectNoSelect(DatabaseAccessor.java:654)
at oracle.toplink.essentials.internal.databaseaccess.DatabaseAccessor.executeNoSelect(DatabaseAccessor.java:703)
at oracle.toplink.essentials.internal.databaseaccess.DatabaseAccessor.basicExecuteCall(DatabaseAccessor.java:492)
at oracle.toplink.essentials.internal.databaseaccess.DatabaseAccessor.executeCall(DatabaseAccessor.java:452)
at oracle.toplink.essentials.internal.sessions.AbstractSession.executeCall(AbstractSession.java:690)
at oracle.toplink.essentials.internal.queryframework.DatasourceCallQueryMechanism.executeCall(DatasourceCallQueryMechanism.java:228)
at oracle.toplink.essentials.internal.queryframework.DatasourceCallQueryMechanism.executeCall(DatasourceCallQueryMechanism.java:214)
at oracle.toplink.essentials.internal.queryframework.DatasourceCallQueryMechanism.insertObject(DatasourceCallQueryMechanism.java:346)
at oracle.toplink.essentials.internal.queryframework.StatementQueryMechanism.insertObject(StatementQueryMechanism.java:191)
at oracle.toplink.essentials.internal.queryframework.StatementQueryMechanism.insertObject(StatementQueryMechanism.java:205)
at oracle.toplink.essentials.internal.queryframework.DatabaseQueryMechanism.insertObjectForWrite(DatabaseQueryMechanism.java:564)
at oracle.toplink.essentials.queryframework.InsertObjectQuery.executeCommit(InsertObjectQuery.java:89)
at oracle.toplink.essentials.internal.queryframework.DatabaseQueryMechanism.performUserDefinedWrite(DatabaseQueryMechanism.java:750)
at oracle.toplink.essentials.internal.queryframework.DatabaseQueryMechanism.performUserDefinedInsert(DatabaseQueryMechanism.java:714)
at oracle.toplink.essentials.internal.queryframework.DatabaseQueryMechanism.insertObjectForWriteWithChangeSet(DatabaseQueryMechanism.java:602)
at oracle.toplink.essentials.queryframework.WriteObjectQuery.executeCommitWithChangeSet(WriteObjectQuery.java:162)
at oracle.toplink.essentials.internal.queryframework.DatabaseQueryMechanism.executeWriteWithChangeSet(DatabaseQueryMechanism.java:390)
at oracle.toplink.essentials.queryframework.WriteObjectQuery.executeDatabaseQuery(WriteObjectQuery.java:109)
at oracle.toplink.essentials.queryframework.DatabaseQuery.execute(DatabaseQuery.java:628)
at oracle.toplink.essentials.queryframework.DatabaseQuery.executeInUnitOfWork(DatabaseQuery.java:555)
at oracle.toplink.essentials.queryframework.ObjectLevelModifyQuery.executeInUnitOfWorkObjectLevelModifyQuery(ObjectLevelModifyQuery.java:138)
at oracle.toplink.essentials.queryframework.ObjectLevelModifyQuery.executeInUnitOfWork(ObjectLevelModifyQuery.java:110)
at oracle.toplink.essentials.internal.sessions.UnitOfWorkImpl.internalExecuteQuery(UnitOfWorkImpl.java:2233)
at oracle.toplink.essentials.internal.sessions.AbstractSession.executeQuery(AbstractSession.java:952)
at oracle.toplink.essentials.internal.sessions.AbstractSession.executeQuery(AbstractSession.java:909)
at oracle.toplink.essentials.internal.sessions.CommitManager.commitNewObjectsForClassWithChangeSet(CommitManager.java:269)
at oracle.toplink.essentials.internal.sessions.CommitManager.commitAllObjectsWithChangeSet(CommitManager.java:190)
at oracle.toplink.essentials.internal.sessions.AbstractSession.writeAllObjectsWithChangeSet(AbstractSession.java:2657)
at oracle.toplink.essentials.internal.sessions.UnitOfWorkImpl.commitToDatabase(UnitOfWorkImpl.java:1044)
at oracle.toplink.essentials.internal.ejb.cmp3.base.RepeatableWriteUnitOfWork.commitToDatabase(RepeatableWriteUnitOfWork.java:403)
at oracle.toplink.essentials.internal.sessions.UnitOfWorkImpl.commitToDatabaseWithChangeSet(UnitOfWorkImpl.java:1126)
at oracle.toplink.essentials.internal.ejb.cmp3.base.RepeatableWriteUnitOfWork.commitRootUnitOfWork(RepeatableWriteUnitOfWork.java:107)
at oracle.toplink.essentials.internal.sessions.UnitOfWorkImpl.commitAndResume(UnitOfWorkImpl.java:856)
at oracle.toplink.essentials.internal.ejb.cmp3.transaction.base.EntityTransactionImpl.commit(EntityTransactionImpl.java:102)
… 29 more
Caused by: com.mysql.jdbc.exceptions.jdbc4.MySQLIntegrityConstraintViolationException: Cannot add or update a child row: a foreign key constraint fails (dbpk.ensaio, CONSTRAINT fk_ensaio_equipamento1 FOREIGN KEY (equipamento_posicao_equipamento) REFERENCES equipamento (posicao_equipamento) ON DELETE NO ACTION ON UPDATE NO ACTION)
at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:57)
at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
at java.lang.reflect.Constructor.newInstance(Constructor.java:532)
at com.mysql.jdbc.Util.handleNewInstance(Util.java:406)
at com.mysql.jdbc.Util.getInstance(Util.java:381)
at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:1015)
at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:956)
at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:3491)
at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:3423)
at com.mysql.jdbc.MysqlIO.sendCommand(MysqlIO.java:1936)
at com.mysql.jdbc.MysqlIO.sqlQueryDirect(MysqlIO.java:2060)
at com.mysql.jdbc.ConnectionImpl.execSQL(ConnectionImpl.java:2542)
at com.mysql.jdbc.PreparedStatement.executeInternal(PreparedStatement.java:1734)
at com.mysql.jdbc.PreparedStatement.executeUpdate(PreparedStatement.java:2019)
at com.mysql.jdbc.PreparedStatement.executeUpdate(PreparedStatement.java:1937)
at com.mysql.jdbc.PreparedStatement.executeUpdate(PreparedStatement.java:1922)
at oracle.toplink.essentials.internal.databaseaccess.DatabaseAccessor.executeDirectNoSelect(DatabaseAccessor.java:647)
… 62 more

Você violou uma constraint:

MySQLIntegrityConstraintViolationException: Cannot add or update a child row: a foreign key constraint fails (dbpk.ensaio, CONSTRAINT fk_ensaio_equipamento1 FOREIGN KEY (equipamento_posicao_equipamento) REFERENCES equipamento (posicao_equipamento) ON DELETE NO ACTION ON UPDATE NO ACTION)

Caused by: com.mysql.jdbc.exceptions.jdbc4.MySQLIntegrityConstraintViolationException: Cannot add or update a child row: a foreign key constraint fails

esse é o erro…

vc está violando as constraints da tabela, pode ser q esteja tentando deletar algo que tem referencias para algum lugar… tenta mudar a criacao da abela por um “ON DELETE CASCADE” ai ele apaga tudo desde a raiz…

Dica: Use a tag [code] quando for postar códigos, mesmo q seja um stack de erro, fica mais fácil de visualizar oq acontence.

falow

Então gregorioarthur eu não estou tentando deletar nenhum dado, simplesmente estou tentando inserir algo na tabela, já atualizei para on delete cascade e on update cascade e não resolveu nada continua com o mesmo erro

Então… Posta o seu SQL da inserção…

As vezes tem algum problema nele.

ou, posta o Create da tabela em questao.

ai eu do uma olhada.

Qual comando que me devo usar para que o banco me devolva o sql ?

 INSERT INTO dbpk.ensaio (tipo_manut_ensaio, usuario_idusuario, data_ensaio, instrumento_idinstrumento, equipamento_posicao_equipamento, fase_ensaio) VALUES (?, ?, ?, ?, ?, ?) 

O SQL é esse, cara seu problema foi relatado na mail list do MySQL como um bug… aparentemente corrigido na versão atual…

Qual a versao do seu MySQL?

quando vc faz o insert, o id que serve de referencia nao ta como autoincrement? se tiver talvez seja isso… Vc tentando setar um valor para algo que vai receber um automatico…

nao conheco mto do MySQL, mas quem sabe! :?

Então gregorio, pelo que eu pude entender meu mysql está setado para gerar o id automaticamente e o bean está setando o id é isso?

No meu código o bean está da seguinte maneira “@id @GeneratedValue (strategy = Generation.Type.IDENTITY)”

Qual a melhor maneira de implementar ?

auto_increment do mysql cara c tem q desativar no proprio banco

Eu desativei o auto increment no banco e não mudou nada. Qual comando devo usar para confirmar que desativei o auto incremento na tabela?
Segue abaixo o erro [code]
Internal Exception: java.sql.SQLException: Field ‘idensaio’ doesn’t have a default value
Error Code: 1364
Call: INSERT INTO dbpk.ensaio (tipo_manut_ensaio, usuario_idusuario, data_ensaio, instrumento_idinstrumento, equipamento_posicao_equipamento, fase_ensaio) VALUES (?, ?, ?, ?, ?, ?)
Internal Exception: java.sql.SQLException: Field ‘idensaio’ doesn’t have a default value
bind => [mcc, 1, null, 1, 1, null]
Query: InsertObjectQuery(br.com.sispk.view.Ensaio[idensaio=null])
Error Code: 1364

Qual comando devo usar para confirmar que desativei o auto incremento na tabela?

Caso alguem necessite use o describe

Eu uso assim

@Id  
@GeneratedValue(strategy = GenerationType.AUTO)

acima do campo q sera o ID…

quanto ao desativar o autoincrement, na create da tabela ele define, se vc nao por o @GeneratedValue, ele nao cria como autoincrement.

ta meio dificil de pensar no q pode ser seu problema, mas eu iria propor um teste… tenta usar o HeidiSQL ou o MySQL WorkBench e rodar esse sql q vc tem…
colocando os mesmos dados que vc qeria inserir pelo aplicativo… se der certo e nao retornar nenhum erro, descarte problemas no BD…

se nao, tente verificar como foi criada as referencias para as tabelas… ou use o WorkBench para criá-las

PS.: eu faço isso para “testar” quando este tipo de problema ocorre.

falow!

muito obrigado gregorioarthur, através da sua idéia consegui resolver meu problema.