前几天刚重新装了下系统,今天把环境全配齐了。发现无法连接MYSQL,情况是这样的。
我的MYSQL是FC6 LINUX 自带的,在命令行下可以用。但是我用EMS MYSQL MANAGER前端连会这样报错:can't connect to local mysql server through scoket'/temp/mysql.sock'(2)
之后我用JAVA写了个测试类
package test;import java.sql.*;public class Test {
public static void main(String arfs[]){
String dir = "com.mysql.jdbc.Driver";
String url = "jdbc:mysql://127.0.0.1/test";
ResultSet rs = null;
Statement st = null;
try{
Class.forName(dir);
Connection conn = DriverManager.getConnection(url,"root","*****");
System.out.print("connetion");
st = conn.createStatement();
rs = st.executeQuery("insert into van values('wwbb','wwbb')");
while(rs.next()){
System.out.println(rs.getString(1));
System.out.println(rs.getString(2));
}
}catch(Exception e){
e.printStackTrace();
}
}}
会有这样的报错:
java.sql.SQLException: Error during query: Unexpected Exception: java.io.CharConversionException message given: nullNested Stack Trace:
** BEGIN NESTED EXCEPTION ** java.io.CharConversionExceptionSTACKTRACE:java.io.CharConversionException
   at gnu.gcj.convert.Input_iconv.read(libgcj.so.7rh)
   at java.lang.String.init(libgcj.so.7rh)
   at java.lang.String.<init>(libgcj.so.7rh)
   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.StringUtils.getBytes(StringUtils.java:600)
   at com.mysql.jdbc.ByteArrayBuffer.writeStringNoNull(ByteArrayBuffer.java:544)
   at com.mysql.jdbc.MysqlIO.sqlQueryDirect(MysqlIO.java:1660)
   at com.mysql.jdbc.Connection.execSQL(Connection.java:3020)
   at com.mysql.jdbc.Connection.configureClientCharacterSet(Connection.java:2343)
   at com.mysql.jdbc.Connection.initializePropsFromServer(Connection.java:3748)
   at com.mysql.jdbc.Connection.createNewIO(Connection.java:2585)
   at com.mysql.jdbc.Connection.<init>(Connection.java:1485)
   at com.mysql.jdbc.NonRegisteringDriver.connect(NonRegisteringDriver.java:266)
   at java.sql.DriverManager.getConnection(libgcj.so.7rh)
   at java.sql.DriverManager.getConnection(libgcj.so.7rh)
   at test.Test.main(Test.java:14)
** END NESTED EXCEPTION **
   at com.mysql.jdbc.Connection.execSQL(Connection.java:3073)
   at com.mysql.jdbc.Connection.configureClientCharacterSet(Connection.java:2343)
   at com.mysql.jdbc.Connection.initializePropsFromServer(Connection.java:3748)
   at com.mysql.jdbc.Connection.createNewIO(Connection.java:2585)
   at com.mysql.jdbc.Connection.<init>(Connection.java:1485)
   at com.mysql.jdbc.NonRegisteringDriver.connect(NonRegisteringDriver.java:266)
   at java.sql.DriverManager.getConnection(libgcj.so.7rh)
   at java.sql.DriverManager.getConnection(libgcj.so.7rh)
   at test.Test.main(Test.java:14)
不是驱动的问题,我用了好几种驱动。
有谁知道是什么原因的吗?

解决方案 »

  1.   

    执行mysql -u root -h 127.0.0.1 test -p,然后输入密码,看能不能连上,如果不行就是数据库的权限问题。
      

  2.   

    可以连上,我是以ROOT登录的,应该不是权限的问题!
      

  3.   

    }catch(Exception e){这是不是得写上
    }catch(SQLException e){

    不知道这样对不对啊
      

  4.   

    你是不是没有给其他客户机进行授权访问mysql?
    GRANT ALL ON * TO [email protected] IDENTIFIED BY "test"
      

  5.   

    仔细看了一下,是字符集的问题,看看你的数据库的字符集,表的字符集,以及客户连接的字符集,建议都改成UTF-8。
      

  6.   

    如果可能的话,换成Sun的JDK会解决问题。我记得GNU的JDK有点问题,但是实在想不起来怎么解决的了。你应该在Java里面问问这个问题,这个问题和MySQL好像没关系。
      

  7.   

    zj4830245() 
    catch  先catch子类,在catch父类.
      

  8.   

    java.io.CharConversionException
    根据这个消息,初步判断是字符转换方面的异常!