Compiling with mysql

ezer andres.a@adinet.com.uy
Wed Sep 3 16:24:00 GMT 2008


3) i discovered how to use the second solution:
conn =
DriverManager.getConnection("jdbc:mysql://localhost:3306/mysql?user=root&password=root&useJvmCharsetConverters=true");

with that you can stay de my.conf unmodified.

Now i am still dont know the performance diference, its not should to run
faster?


ezer wrote:
> 
> 1) I found whats going on, its an incompatibility in the character
> conversion between the gcj and mysql. Here is the explanation and the
> workaround :
> 
> http://dev.mysql.com/doc/refman/5.0/en/connector-j-usagenotes-troubleshooting.html#qandaitem-28-4-5-3-9
> 
> http://bugs.mysql.com/bug.php?id=29636
> (go to the post [9 Jul 2007 17:05])
> 
> 2) I added 
> default-character-set=utf8
> under [client] and [mysqld] sections of the my.cnf file of mysql
> 
> 3) The other solution of using useJvmCharsetConverters=true i didnt tested
> because i dont know where to use that string.
> 
> 4) Now i get the test program runing fine with the following output:
> MySQL Connect Example.
> Connected to the database
> Disconnected from database
> 
> But one thing is that the connection executing under the gcj program runs
> considerable slower than the same test runing with java MysqlConnect. Its
> normal for connections ? 
> 
> 
> 
> 
> Andrew Haley wrote:
>> 
>> ezer wrote:
>>> Andrew, i dont understand what do you mean with exactly, I will try to
>>> explain again, i isolated the problem only compiling a short code that
>>> only
>>> conects to the database and exit. 
>>> 
>>> 1) The code is the following
>>> 
>>> import java.sql.*;
>>> 
>>> public class MysqlConnect{
>>>   public static void main(String[] args) {
>>>     System.out.println("MySQL Connect Example.");
>>>     Connection conn = null;
>>>     String url = "jdbc:mysql://localhost:3306/";
>>>     String dbName = "myDatabase";
>>>     String driver = "com.mysql.jdbc.Driver";
>>>     String userName = "root";
>>>     String password = "root";
>>>     try {
>>>       Class.forName(driver).newInstance();
>>>       conn = DriverManager.getConnection(url+dbName,userName,password);
>>>       System.out.println("Connected to the database");
>>>       conn.close();
>>>       System.out.println("Disconnected from database");
>>>     } catch (Exception e) {
>>>       e.printStackTrace();
>>>     }
>>>   }
>>> }
>> 
>> As far as I can tell the error message is not coming from gcj,
>> but from mysql.  It's quite possible that this is caused by
>> a bug in gcj, but I'd have to debug it to know for sure.  Is
>> there a log from mysql?
>> 
>> Andrew.
>> 
>>> 2) I compile
>>> gcj --main=MysqlConnect -o mysqlconnect MysqlConnect.java
>>> 
>>> (gcj version : 4.3.1)
>>> 
>>> 3) Execution:
>>> 
>>> ./mysqlconnect
>>> 
>>> 4) Output:
>>> 
>>> MySQL Connect Example.
>>> com.mysql.jdbc.exceptions.MySQLSyntaxErrorException: You have an error
>>> in
>>> your SQL syntax; check the manual that corresponds to your MySQL server
>>> version for the right syntax to use near
>>> '????????????????????????????????'
>>> at line 1
>>>    at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:936)
>>>    at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:2985)
>>>    at com.mysql.jdbc.MysqlIO.sendCommand(MysqlIO.java:1631)
>>>    at com.mysql.jdbc.MysqlIO.sqlQueryDirect(MysqlIO.java:1723)
>>>    at com.mysql.jdbc.Connection.execSQL(Connection.java:3277)
>>>    at
>>> com.mysql.jdbc.Connection.configureClientCharacterSet(Connection.java:2525)
>>>    at
>>> com.mysql.jdbc.Connection.initializePropsFromServer(Connection.java:4139)
>>>    at com.mysql.jdbc.Connection.createNewIO(Connection.java:2789)
>>>    at com.mysql.jdbc.Connection.<init>(Connection.java:1555)
>>>    at
>>> com.mysql.jdbc.NonRegisteringDriver.connect(NonRegisteringDriver.java:285)
>>>    at java.sql.DriverManager.getConnection(libgcj.so.90)
>>>    at java.sql.DriverManager.getConnection(libgcj.so.90)
>>>    at MysqlConnect.main(MysqlConnect.java:14)
>>> 
>>> 5) I installed a previous version of gcj 4.2 and repetead the
>>> compilation
>>> and execution, and the result was the following:
>>> 
>>> MySQL Connect Example.
>>> java.sql.SQLException: Error during query: Unexpected Exception:
>>> java.io.CharConversionException message given: null
>>> 
>>> Nested Stack Trace:
>>> 
>>> 
>>> ** BEGIN NESTED EXCEPTION ** 
>>> 
>>> java.io.CharConversionException
>>> 
>>> STACKTRACE:
>>> 
>>> java.io.CharConversionException
>>>    at gnu.gcj.convert.Input_iconv.read(libgcj.so.81)
>>>    at java.lang.String.init(libgcj.so.81)
>>>    at java.lang.String.<init>(libgcj.so.81)
>>>    at
>>> com.mysql.jdbc.SingleByteCharsetConverter.<init>(SingleByteCharsetConverter.java:153)
>>>    at
>>> com.mysql.jdbc.SingleByteCharsetConverter.initCharset(SingleByteCharsetConverter.java:108)
>>>    at
>>> com.mysql.jdbc.SingleByteCharsetConverter.getInstance(SingleByteCharsetConverter.java:86)
>>>    at
>>> com.mysql.jdbc.Connection.getCharsetConverter(Connection.java:3505)
>>>    at com.mysql.jdbc.StringUtils.getBytes(StringUtils.java:615)
>>>    at com.mysql.jdbc.Buffer.writeStringNoNull(Buffer.java:655)
>>>    at com.mysql.jdbc.MysqlIO.sqlQueryDirect(MysqlIO.java:1686)
>>>    at com.mysql.jdbc.Connection.execSQL(Connection.java:3277)
>>>    at
>>> com.mysql.jdbc.Connection.configureClientCharacterSet(Connection.java:2525)
>>>    at
>>> com.mysql.jdbc.Connection.initializePropsFromServer(Connection.java:4139)
>>>    at com.mysql.jdbc.Connection.createNewIO(Connection.java:2789)
>>>    at com.mysql.jdbc.Connection.<init>(Connection.java:1555)
>>>    at
>>> com.mysql.jdbc.NonRegisteringDriver.connect(NonRegisteringDriver.java:285)
>>>    at java.sql.DriverManager.getConnection(libgcj.so.81)
>>>    at java.sql.DriverManager.getConnection(libgcj.so.81)
>>>    at MysqlConnect.main(mysqlconnect)
>>> 
>>> 
>>> ** END NESTED EXCEPTION **
>>> 
>>> 
>>>    at com.mysql.jdbc.Connection.execSQL(Connection.java:3330)
>>>    at
>>> com.mysql.jdbc.Connection.configureClientCharacterSet(Connection.java:2525)
>>>    at
>>> com.mysql.jdbc.Connection.initializePropsFromServer(Connection.java:4139)
>>>    at com.mysql.jdbc.Connection.createNewIO(Connection.java:2789)
>>>    at com.mysql.jdbc.Connection.<init>(Connection.java:1555)
>>>    at
>>> com.mysql.jdbc.NonRegisteringDriver.connect(NonRegisteringDriver.java:285)
>>>    at java.sql.DriverManager.getConnection(libgcj.so.81)
>>>    at java.sql.DriverManager.getConnection(libgcj.so.81)
>>>    at MysqlConnect.main(mysqlconnect)
>>> 
>>> 6) It seems it cant execute  the line conn =
>>> DriverManager.getConnection(url+dbName,userName,password);
>>> From the same machine executing with java sun, it did well, but not with
>>> the
>>> java version from the gcj.. 
>>> 
>>> It was exactly what i did.. dont know what else could i add.
>>> 
>>> 
>>> 
>>> 
>>> 
>>> 
>>> 
>>> Andrew Haley wrote:
>>>> ezer wrote:
>>>>> New try:
>>>>>
>>>>> I generated mysql-connector-java-5.0.8-bin.o
>>>>> and used it in the compilation of the program
>>>>> gcj --main=Search --classpath=mysql-connector-java-5.0.8-bin.o 
>>>>> Searcher.jar
>>>>> -o search
>>>>>
>>>>> It compiles without errors, but when i execute ./search i get
>>>>> segmentation
>>>>> fault
>>>>>
>>>>> I dont know what to do.. help please...
>>>> the key problem here is that you haven't told us *exactly* what you are
>>>> doing.  We need to know if we can help you.
>>>>
>>>> http://www.catb.org/~esr/faqs/smart-questions.html
>>>>
>>>> Andrew.
>>>>
>>>>
>>>>
>>>>
>>> 
>> 
>> 
>> 
> 
> 

-- 
View this message in context: http://www.nabble.com/Compiling-with-mysql-tp19092090p19292758.html
Sent from the gcc - java mailing list archive at Nabble.com.



More information about the Java mailing list