Encoding in Connector/J 5.1.7

Niklas Saers <[email protected]> Tue, 14 Jul 2009 14:25:46 +0200
Newsgroups gmane.comp.db.mysql.java
Message-ID <[email protected]>
Hi again, guys,
While cleaning up the code-base I've inherited, I switched from  
Connector/J 5.0.5 to Connector/J 5.1.7. In the JDBC declaration I've set

useUnicode=true&amp;characterEncoding=latin1    (the full JDBC config  
below)

before updating, but now an INSERT call via a prepared statement fails  
because I try to insert a string containing scandinavian letters. When  
doing a toString() on my prepared statement I get

INSERT INTO tblLog(headline, comment, ts) VALUES ('Testing rækkehus',  
'yet another test', NOW())

Inserting this line manually via the MySQL client goes fine, executing  
the prepared statement gives an SQLException (pasted below). This  
insert went well with version 5.0.5. What should I do to make it deal  
nicely with the table that's in latin1?

Cheers

	Nik



   <ResourceParams name="jdbc/MyDB">
     <parameter><name>driverClassName</ 
name><value>com.mysql.jdbc.Driver</value></parameter>
     <parameter><name>factory</ 
name><value>org.apache.commons.dbcp.BasicDataSourceFactory</value></ 
parameter>
     <parameter><name>username</name><value>someuser</value></parameter>
     <parameter><name>password</name><value>somepass</value></parameter>
     <parameter>
       <name>url</name>
       <value>jdbc:mysql://localhost/MyDB? 
autoReconnect=true&amp;useUnicode=true&amp;characterEncoding=latin1</ 
value>
     </parameter>
     <parameter><name>maxActive</name><value>100</value></parameter>
     <parameter><name>maxWait</name><value>10000</value></parameter>
     <parameter><name>maxIdle</name><value>30</value></parameter>
     <parameter><name>validationQuery</name><value>SELECT 1</value></ 
parameter>
     <parameter><name>testWhileIdle</name><value>true</value></ 
parameter>
   </ResourceParams>


com.mysql.jdbc.SQLError:createSQLException(): Incorrect string value:  
'\xE6kkehu...' for column 'headline' at row 1
    com.mysql.jdbc.SQLError.createSQLException(SQLError.java:1055)
    com.mysql.jdbc.SQLError.createSQLException(SQLError.java:956)
    com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:3515)
    com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:3447)
    com.mysql.jdbc.MysqlIO.sendCommand(MysqlIO.java:1951)
    com.mysql.jdbc.MysqlIO.sqlQueryDirect(MysqlIO.java:2101)
    com.mysql.jdbc.ConnectionImpl.execSQL(ConnectionImpl.java:2554)
    com.mysql.jdbc.PreparedStatement.executeInternal 
(PreparedStatement.java:1761)
    com.mysql.jdbc.PreparedStatement.executeUpdate 
(PreparedStatement.java:2046)
    com.mysql.jdbc.PreparedStatement.executeUpdate 
(PreparedStatement.java:1964)
    com.mysql.jdbc.PreparedStatement.executeUpdate 
(PreparedStatement.java:1949)
    dk.someclient.servlets.TestServlet.insertPS(TestServlet.java:72)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:763)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:856)
    org.apache.catalina.core.ApplicationFilterChain.internalDoFilter 
(ApplicationFilterChain.java:237)
    org.apache.catalina.core.ApplicationFilterChain.doFilter 
(ApplicationFilterChain.java:157)
    org.apache.catalina.core.StandardWrapperValve.invoke 
(StandardWrapperValve.java:214)
    org.apache.catalina.core.StandardValveContext.invokeNext 
(StandardValveContext.java:104)
    org.apache.catalina.core.StandardPipeline.invoke 
(StandardPipeline.java:520)
    org.apache.catalina.core.StandardContextValve.invokeInternal 
(StandardContextValve.java:198)
    org.apache.catalina.core.StandardContextValve.invoke 
(StandardContextValve.java:152)
    org.apache.catalina.core.StandardValveContext.invokeNext 
(StandardValveContext.java:104)
    org.apache.catalina.authenticator.AuthenticatorBase.invoke 
(AuthenticatorBase.java:540)
    org.apache.catalina.core.StandardValveContext.invokeNext 
(StandardValveContext.java:102)
    org.apache.catalina.core.StandardPipeline.invoke 
(StandardPipeline.java:520)
    org.apache.catalina.core.StandardHostValve.invoke 
(StandardHostValve.java:137)
    org.apache.catalina.core.StandardValveContext.invokeNext 
(StandardValveContext.java:104)
    org.apache.catalina.valves.ErrorReportValve.invoke 
(ErrorReportValve.java:117)
    org.apache.catalina.core.StandardValveContext.invokeNext 
(StandardValveContext.java:102)
    org.apache.catalina.authenticator.SingleSignOn.invoke 
(SingleSignOn.java:443)
    org.apache.catalina.core.StandardValveContext.invokeNext 
(StandardValveContext.java:102)
    org.apache.catalina.core.StandardPipeline.invoke 
(StandardPipeline.java:520)
    org.apache.catalina.core.StandardEngineValve.invoke 
(StandardEngineValve.java:109)
    org.apache.catalina.core.StandardValveContext.invokeNext 
(StandardValveContext.java:104)
    org.apache.catalina.valves.AccessLogValve.invoke 
(AccessLogValve.java:535)
    org.apache.catalina.core.StandardValveContext.invokeNext 
(StandardValveContext.java:102)
    org.apache.catalina.core.StandardPipeline.invoke 
(StandardPipeline.java:520)
    org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java: 
929)
    org.apache.coyote.tomcat5.CoyoteAdapter.service(CoyoteAdapter.java: 
160)
    org.apache.coyote.http11.Http11Processor.process 
(Http11Processor.java:790)
    org.apache.coyote.http11.Http11Protocol 
$Http11ConnectionHandler.processConnection(Http11Protocol.java:709)
    org.apache.tomcat.util.net.TcpWorkerThread.runIt 
(PoolTcpEndpoint.java:572)
    org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run 
(ThreadPool.java:644)
    java.lang.Thread.run(Thread.java:595)


-- 
MySQL Java Mailing List
For list archives: http://lists.mysql.com/java
To unsubscribe:    http://lists.mysql.com/[email protected]