Re: Updating a chkpass column in postgres v8.1.21
От | Tom Lane |
---|---|
Тема | Re: Updating a chkpass column in postgres v8.1.21 |
Дата | |
Msg-id | 29560.1337280277@sss.pgh.pa.us обсуждение исходный текст |
Ответ на | Updating a chkpass column in postgres v8.1.21 ("Nelson, Howard C" <howard.c.nelson@lmco.com>) |
Список | pgsql-novice |
"Nelson, Howard C" <howard.c.nelson@lmco.com> writes: > I am using the JDBC prepareStatement object to build a SQL statement that should update a users password in a postgresv8.1.21 database. (Based on what I have read, chkpass became a "contrib module" starting at 8.3, but I have to usean older version of postgres.) Here is my java code/snippet: No, it's been in contrib a long time... > // Build an SQL statement with caller's parameters > private static final String m_defaultPass = "changeme"; > stmtStr = "UPDATE users SET pwd_date=now(), pwd=? " + "WHERE user_id=?;"; > stmt = con.prepareStatement(stmtStr); > stmt.setString(1, m_defaultPass); > stmt.setString(2, userId); This is telling JDBC that parameter 1 is a string (hence, character varying); but there is no cast from varchar to chkpass (hence, fail). It might work to use setObject not setString there, but not sure because I'm not a Java person. You might get more help on that from the pgsql-jdbc list. In more recent PG versions you could definitely fix it with an explicit cast in the query, ie "SET pwd=?::chkpass", but I think that will not work in 8.1. BTW, 8.1 has been out of support for awhile. You really need to think about upgrading. regards, tom lane
В списке pgsql-novice по дате отправления: