当前位置: 首页 > 面试题库 >

如何处理“ org.postgresql.util.PSQLException:未为参数1指定值”?

长孙朝明
2023-03-14
问题内容

注册到我的Grails应用程序后,用户会收到一封带有确认链接的电子邮件。单击该链接,将她带到相应的“启用”操作。

这完美无瑕。但是,现在似乎有一个非常特定的令牌出现错误,该令牌的user.save()失败了:

assert !user.isDirty()  // assertion is ok
user.enabled = true
user.confirmationToken = null
assert user.isDirty()   // assertion is ok

if (user.save()) {  // FAILS WITH ERROR BELOW
    // ...
}

堆栈跟踪:

[ 16.09.2011 11:57:47.591] [http-bio-localhost/127.0.0.1-8080-exec-3] 
ERROR 
org.codehaus.groovy.grails.web.errors.GrailsExceptionResolver 
org.apache.commons.logging.impl.SLF4JLog

 Exception occurred when processing request: [GET] /user/enable/bc73701c-d280-4de0-8951-7af9f2a3d636
Stacktrace follows:
org.postgresql.util.PSQLException: No value specified for parameter 1.
        at org.postgresql.core.v3.SimpleParameterList.checkAllParametersSet(SimpleParameterList.java:178)
        at org.postgresql.core.v3.QueryExecutorImpl.execute(QueryExecutorImpl.java:246)
        at org.postgresql.jdbc2.AbstractJdbc2Statement.execute(AbstractJdbc2Statement.java:500)
        at org.postgresql.jdbc2.AbstractJdbc2Statement.executeWithFlags(AbstractJdbc2Statement.java:388)
        at org.postgresql.jdbc2.AbstractJdbc2Statement.executeQuery(AbstractJdbc2Statement.java:273)
        at org.apache.commons.dbcp.DelegatingPreparedStatement.executeQuery(DelegatingPreparedStatement.java:96)
        at org.apache.commons.dbcp.DelegatingPreparedStatement.executeQuery(DelegatingPreparedStatement.java:96)
        at myproj.UserService.enableUser(UserService.groovy:234)
        at myproj.UserController$_closure8.doCall(UserController.groovy:244)
        at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:885)
        at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:907)
        at java.lang.Thread.run(Thread.java:619)

请注意,我可以在同一运行实例中创建其他用户-但是(到目前为止)该错误仅在该代码中发生。

关于如何解决这个问题的任何想法?

使用的版本:

  • PostgreSQL:9.1beta3
  • JDBC驱动程序:postgresql:9.1-901.jdbc4
  • Grails:2.0.0.BUILD-SNAPSHOT(内部版本#1378)

(由于正在开发这些部分,可能是一个错误,但是我不确定。)


问题答案:

正如提到的JIRA问题中概述的那样,问题源于为映射类设置的唯一约束。

将唯一约束移到Mapping DC中解决了此问题。



 类似资料:
  • 问题内容: 我在执行应用程序时遇到以下错误: java.sql.SQLException:未为参数1指定值 这是什么意思? 我在岛上的清单: 我在托管bean中获得的用户组列表: 我的JSF页面: 我的数据表能够显示数据库中的组列表。但是,当我在数据表中选择单个行时,应用程序需要一些时间才能与数据库建立连接以显示所选结果。 另外,奇怪的是,该应用程序能够比其他应用程序更快地显示某些选定的结果。与我

  • 问题内容: 我在这里有用于登录的代码,遇到此错误,“ java.sql.SQLException:未为参数2指定值” 有时,“ java.sql.SQLException:参数索引超出范围(1>参数数量,为0)。” 我真的不知道 } 问题答案: 您正在将用户和密码都分配给相同的参数(1)。 更改此: 对此:

  • 问题内容: 我最近下载了watij。他们在他们的网站上说 注意:如果在Mac上运行,则必须添加Java VM参数。 我想知道这样做的步骤是什么,因为它们没有指定。 问题答案: 将-d32添加到vm参数意味着在运行应用程序时: 相反,您可以这样做: 它指定程序将在32位体系结构上运行。 要从 Eclipse 设置JVM参数,请执行以下操作: 1.右键单击要运行的类。 2.单击运行配置 。3.转到参数

  • 我不知道这个错误意味着什么,也不知道如何修复它。我试图从我的一个数据库中检索一些数据,但一直遇到下面的错误消息。

  • 我正在对客户代理的类型进行建模。他们被赋予参数:他们工作(真/假)并接受教育(真/假)。 存在这样一个条件,即块服务中的代理在works==true和education==true的位置。其他人都去出口。 在此处输入图像描述 每个代理如何指定不同的参数?

  • 问题内容: 我有一个针对SQL2005的参数化SQL查询,该查询是通过代码动态创建的,因此我使用ADO.NET类将sql参数添加到中。 在上述SQL中,我从具有默认值的表值函数中进行选择。我希望动态sql有时为这些默认参数指定一个值,而其他时候我想指定使用表值函数中定义的SQL 。 为了保持代码 整洁, 我不想动态添加SQL关键字并在使用非默认值时对其进行参数化,我只是想将其设置为my的值。 我可