Verifique se o registro não é duplicado



  • Não consigo entender o porque desta mensagem. Tenho uma aplicação no postgresql e tenho uma tabela com chave primaria, auto incremento e etc. Mas ao tentar inserir um novo registro na tabela da esta mensagem:

    "Erro ao tentar incluir novo registro. Verifique se o registro não é duplicado".

    Desde já agradeço.


  • Clique em mais detalhes e informe o erro apresentado.


  • A exceção gerada é esta:
    [code]Exceção Gerada: wfr.exceptions.WFRException: org.postgresql.util.PSQLException: ERROR: duplicate key violates unique constraint "cargos_2_pkey" at wfr.sys.WFRData.checkException(WFRData.java:2225) at wfr.sys.WFRData.doInclude(WFRData.java:2536) at wfr.sys.WFRData.doInclude(WFRData.java:2435) at wfr.sys.HTMLInterface.HTMLForm.postUpdates(HTMLForm.java:827) at wfr.web.actions.FormAction.execute(FormAction.java:117) at wfr.web.Action.doAction(Action.java:126) at wfr.web.Controller.process(Controller.java:100) at wfr.web.Controller.doPost(Controller.java:67) at javax.servlet.http.HttpServlet.service(HttpServlet.java:637) at javax.servlet.http.HttpServlet.service(HttpServlet.java:717) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206) at wfr.web.ContextFilter.doFilter(ContextFilter.java:70) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206) at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:233) at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191) at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:433) at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:128) at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102) at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109) at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:286) at org.apache.coyote.ajp.AjpAprProcessor.process(AjpAprProcessor.java:419) at org.apache.coyote.ajp.AjpAprProtocol$AjpConnectionHandler.process(AjpAprProtocol.java:378) at org.apache.tomcat.util.net.AprEndpoint$Worker.run(AprEndpoint.java:1509) at java.lang.Thread.run(Thread.java:595) Caused by: org.postgresql.util.PSQLException: ERROR: duplicate key violates unique constraint "cargos_2_pkey" at org.postgresql.core.v3.QueryExecutorImpl.receiveErrorResponse(QueryExecutorImpl.java:1608) at org.postgresql.core.v3.QueryExecutorImpl.processResults(QueryExecutorImpl.java:1343) at org.postgresql.core.v3.QueryExecutorImpl.execute(QueryExecutorImpl.java:194) at org.postgresql.jdbc2.AbstractJdbc2Statement.execute(AbstractJdbc2Statement.java:451) at org.postgresql.jdbc2.AbstractJdbc2Statement.executeWithFlags(AbstractJdbc2Statement.java:350) at org.postgresql.jdbc2.AbstractJdbc2Statement.executeUpdate(AbstractJdbc2Statement.java:304) at wfr.database.DBConnection.execInsertStatement(DBConnection.java:1266) at wfr.sys.WFRData.doInclude(WFRData.java:2500) ... 24 more Causa: org.postgresql.util.PSQLException: ERROR: duplicate key violates unique constraint "cargos_2_pkey" at org.postgresql.core.v3.QueryExecutorImpl.receiveErrorResponse(QueryExecutorImpl.java:1608) at org.postgresql.core.v3.QueryExecutorImpl.processResults(QueryExecutorImpl.java:1343) at org.postgresql.core.v3.QueryExecutorImpl.execute(QueryExecutorImpl.java:194) at org.postgresql.jdbc2.AbstractJdbc2Statement.execute(AbstractJdbc2Statement.java:451) at org.postgresql.jdbc2.AbstractJdbc2Statement.executeWithFlags(AbstractJdbc2Statement.java:350) at org.postgresql.jdbc2.AbstractJdbc2Statement.executeUpdate(AbstractJdbc2Statement.java:304) at wfr.database.DBConnection.execInsertStatement(DBConnection.java:1266) at wfr.sys.WFRData.doInclude(WFRData.java:2500) at wfr.sys.WFRData.doInclude(WFRData.java:2435) at wfr.sys.HTMLInterface.HTMLForm.postUpdates(HTMLForm.java:827) at wfr.web.actions.FormAction.execute(FormAction.java:117) at wfr.web.Action.doAction(Action.java:126) at wfr.web.Controller.process(Controller.java:100) at wfr.web.Controller.doPost(Controller.java:67) at javax.servlet.http.HttpServlet.service(HttpServlet.java:637) at javax.servlet.http.HttpServlet.service(HttpServlet.java:717) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206) at wfr.web.ContextFilter.doFilter(ContextFilter.java:70) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206) at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:233) at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191) at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:433) at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:128) at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102) at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109) at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:286) at org.apache.coyote.ajp.AjpAprProcessor.process(AjpAprProcessor.java:419) at org.apache.coyote.ajp.AjpAprProtocol$AjpConnectionHandler.process(AjpAprProtocol.java:378) at org.apache.tomcat.util.net.AprEndpoint$Worker.run(AprEndpoint.java:1509) at java.lang.Thread.run(Thread.java:595)[/code]


  • Essa tabela foi criada pelo próprio Maker ou foi manualmente? A inserção está sendo feita pelo CRUD que o próprio Maker oferece ou vc está fazendo o controle?


  • Essa tabela foi feita por mim, e não pelo Maker. Mas é o Maker que está controlando-a. Na verdade, o banco do sistema foi importado para o PostgreSQL, e algumas tabelas perderam a chave primária. Quando fui setar como chave primária o campo id, começou a dar este erro.


  • Cara o Postgres para suas chaves primarias quando definidas como auto incremento ele cria uma sequence, essa sequence normalmente inicia com o valor 1, se vc definiu a chave depois da tabela já possuir dados, ele irá tentar criar o id 1 porém já deve existir um registro com essa chave. Dar uma olhada nesse blog aí acho que vai te ajudar, ele explica como criar ou alterar sequence para começar a partir de um valor desejado aí é só verificar o ultimo id dessa tabela e pronto.

    http://mrsantos76.wordpress.com/category/postgres/ Procure por "Alter sequence no postgres".


  • Muitíssimo obrigada!!! Deu certo!!! Segui os passos do site e funfou!!! Valeu cara!!!

Log in to reply