Re: Very strange Error in Updates
От | Dario V. Fassi |
---|---|
Тема | Re: Very strange Error in Updates |
Дата | |
Msg-id | 40F618DF.7070609@sistemat.com.ar обсуждение исходный текст |
Ответ на | Very strange Error in Updates ("Dario V. Fassi" <software@sistemat.com.ar>) |
Ответы |
Re: Very strange Error in Updates
("Dario V. Fassi" <software@sistemat.com.ar>)
|
Список | pgsql-jdbc |
Worst cases:
The receiving field is a Varchar(30) .
Sample data :
CALLE=[ENFERMERA CLEMON. B- ALTO ALBR] len=30 : Is Updated Ok.
CALLE=[ENFERMERA CLEMON. Bº ALTO ALBR] len=30 : Is NOT Updated
CALLE=[ENFERMERA CLEMON. Bº ALTO ALB] len=29 : Is Updated Ok.
Dario V. Fassi wrote:
Dario V. Fassi
SISTEMATICA ingenieria de software srl
Ituzaingo 1628 (2000) Rosario, Santa Fe, Argentina.
Tel / Fax: +54 (341) 485.1432 / 485.1353
The receiving field is a Varchar(30) .
Sample data :
CALLE=[ENFERMERA CLEMON. B- ALTO ALBR] len=30 : Is Updated Ok.
CALLE=[ENFERMERA CLEMON. Bº ALTO ALBR] len=30 : Is NOT Updated
CALLE=[ENFERMERA CLEMON. Bº ALTO ALB] len=29 : Is Updated Ok.
Dario V. Fassi wrote:
I found a very strange error/behavior in a PreparedStatement for a simple SQL Update over a VARCHAR field.
The code is like:
Statement stmt = con.createStatement();
PreparedStatement pstIns = con.prepareStatement("update userid.t set calle = ? "); ResultSet rs = stmt.executeQuery( "select calle from userid.t2" );
while ( rs.next() ) {
pstIns.clearParameters();
String x = rs.getString("CALLE");
pstIns.setString(1, x );
int nrows = pstIns.executeUpdate();
System.out.println( "Filas afectadas "+ nrows );
}
When the parameter fill the full-length of receiving field and has any non common character, the update throw a exception like:
java.sql.SQLException: ERROR: value too long for type character varying(30)
at org.postgresql.core.v2.QueryExecutorImpl.receiveErrorMessage(QueryExecutorImpl.java:420)
at org.postgresql.core.v2.QueryExecutorImpl.processResults(QueryExecutorImpl.java:345)
at org.postgresql.core.v2.QueryExecutorImpl.execute(QueryExecutorImpl.java:251)
at org.postgresql.core.v2.QueryExecutorImpl.execute(QueryExecutorImpl.java:159)
at org.postgresql.jdbc1.AbstractJdbc1Statement.execute(AbstractJdbc1Statement.java:342)
at org.postgresql.jdbc1.AbstractJdbc1Statement.executeWithFlags(AbstractJdbc1Statement.java:290)
at org.postgresql.jdbc1.AbstractJdbc1Statement.executeUpdate(AbstractJdbc1Statement.java:245)
at com.sistemat.app.rsmaster.reloadable.RepImportar.PrDw_Cuentas(RepImportar.java:2471)
at com.sistemat.app.rsmaster.reloadable.RepImportar.Importar(RepImportar.java:260)
at com.sistemat.app.rsmaster.reloadable.RepMasterImpl.Ciclo_Replicacion(RepMasterImpl.java:955)
at com.sistemat.app.rsmaster.reloadable.RepMasterImpl.runWorker(RepMasterImpl.java:748)
at com.sistemat.app.rsmaster.reloadable.RepMasterImpl.run(RepMasterImpl.java:427)
at java.lang.Thread.run(Unknown Source)
This field/value produce the Exception: CALLE=[ENFERMERA CLEMON. B§ ALTO ALBR]
If this field is changed to: CALLE=[ENFERMERA CLEMON. B# ALTO ALBR]
then the update is performed without
any problem.
Although the first value can be Inserted with a prepared statement without problems.
A have no explanation to this case , and any help will be appreciated.
Dario Fassi.
--
Dario V. Fassi
SISTEMATICA ingenieria de software srl
Ituzaingo 1628 (2000) Rosario, Santa Fe, Argentina.
Tel / Fax: +54 (341) 485.1432 / 485.1353
В списке pgsql-jdbc по дате отправления: